数据库操作

插入文档

文档的数据结构和JSON基本一样。
 所有存储在集合中的数据都是BSON格式。
 BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON
 
 要将数据插入到mongodb集合中,需要使用mongodb的insert()或save()方法
 
 js
 db.集合名.insert(document)
 
 比如我们可以插入以下数据
  js
  db.wscats.insert({
    _id: 100,
    title: ‘MongoDB Tutorials’, 
    description: ‘node_tutorials’,
    by: ‘Oaoafly’,
    url: ‘https://github.com/Wscats/node-tutorial’,
    tags: [‘wscat’,‘MongoDB’, ‘database’, ‘NoSQL’,‘node’],
    num: 100,
 })
 
 也可以支持插入多个,注意传入的是数组形式
 
 js
 db.wscats.insert([{
    _id: 100,
    title: ‘Hello’
 },{
    _id: 101,
    title: ‘World’
 }])
 
 在插入的文档中,如果不指定_id参数,那么mongodb会为此文档分配一个唯一的ObjectId
 要插入文档,也可以使用db.post.save(document)。如果不在文档中指定_id,那么save()方法将与insert()方法一样自动分配ID的值。如果指定_id,则将以save()方法的形式替换包含**_id**的文档的全部数据。
 
 js
 db.wscats.save({
    _id: 111,
    title: ‘Oaoafly Wscats’, 
 })

更新文档

1.update()方法

寻找第一条title为wscats的值,并且更新值title为corrine和age为12
 
 js
 db.age.update({
   ‘title’: ‘wscats’
 }, {
   KaTeX parse error: Expected 'EOF', got '}' at position 54: …age': 12    }  }̲)    默认情况下,mong…set: {
     ‘title’: ‘corrine’,
     ‘age’: 12
   }
 }, {
   multi: true
 })

2.save()方法

_id主键为3的文档,覆盖新的值,注意_id为必传
 
 db.age.save({
   ‘_id’:3,
   ‘title’: ‘wscats’
 })

删除文档

删除主键_id为3的文档,默认是删除多条
 
 js
 db.age.remove({
   ‘_id’:3
 })
 
 建议在执行remove()函数前先执行find()命令来判断执行的条件是否正确
 
 如果你只想删除第一条找到的记录可以设置justOne为1,如下所示
 
 js
 db.age.remove({…},1)

全部删除
 
 js
 db.age.remove({})

排序

在mongodb中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用1和-1来指定排序的方式,其中1为升序排列,而-1是用于降序排列。
 
 1 升序排列
 -1  降序排列
 js
 db.集合名.find().sort({键值(属性值):1})
 
 把age集合表重新根据_id主键进行降序排列
 
js
 db.age.find().sort({
   “_id”: -1
 })

数据库操作

1.连接数据库

js
 var MongoClient = require(‘mongodb’).MongoClient;
 //结尾是选择数据库名
 var DB_CONN_STR = ‘mongodb://localhost:27017/wscats’;
 MongoClient.connect(DB_CONN_STR, function(err, db) {
   console.log(“连接成功!”);
 });

2.查询数据

注意查询回来的结果需要toArray来遍历处理
 js
 var MongoClient = require(‘mongodb’).MongoClient;
 var DB_CONN_STR = ‘mongodb://localhost:27017/wscats’;
 
 MongoClient.connect(DB_CONN_STR, function(err, db) {
   console.log(“连接成功!”);
   //选中age集合,并用find方法把结果集拿回来进行处理
   db.collection(“age”).find({title: “cba”}).toArray(function(err, result) {
     if (err) {
       console.log(‘Error:’ + err);
       return;
     }
     console.log(result);
   });
 });

查询ID

查询自动生成的ObjectId
js
 var ObjectId = require(‘mongodb’).ObjectId;
 let _id = ObjectId(“5bcae50ed1f2c2f5e4e1a76a”);
 db.collection(‘xxx’).find({
     “_id”: _id
 }).forEach(function (item) {
     console.log(item)
 })

3.插入数据

insert函数第一个参数是需要插入的值(可以一个也可以多个),第二个参数是接受一个回调函数,当值插入成功后回返回插入值得一些关键信息,比如_id
 
js
 var MongoClient = require(‘mongodb’).MongoClient;
 var DB_CONN_STR = ‘mongodb://localhost:27017/wscats’;
 
 MongoClient.connect(DB_CONN_STR, function(err, db) {
   console.log(“连接成功!”);
 const db = client.db(“demo”);
   db.collection(“age”).insert([
     { 
       title: “插入的值A”
     }, {
       title: “插入的值B”
     }
   ], function(err, result) {
     if (err) {
       console.log(‘Error:’ + err);
       return;
     }
     console.log(result)
   })
 });

4.更新数据

注意如果不加 s e t 就 是 完 全 替 换 原 来 的 那 份 ( 没 有 设 置 的 属 性 值 将 会 丢 失 ) , 加 上 set就是完全替换原来的那份(没有设置的属性值将会丢失),加上 set()set则只是更新对应的属性值,其余不做改变
 var MongoClient = require(‘mongodb’).MongoClient;
 var DB_CONN_STR = ‘mongodb://localhost:27017/wscats’;
 
 MongoClient.connect(DB_CONN_STR, function(err, db) {
   console.log(“连接成功!”);
   db.collection(“age”).update({
     “_id”: 1
   }, {
     $set: {
       title: “你好,世界”,
       skill: “js”
     }
   }, function(err, result) {
     if (err) {
       console.log(‘Error:’ + err);
       return;
     }
     //console.log(result);
   });
 });

5.删除数据

js
 var MongoClient = require(‘mongodb’).MongoClient;
 var DB_CONN_STR = ‘mongodb://localhost:27017/wscats’;
 
 MongoClient.connect(DB_CONN_STR, function(err, db) {
   console.log(“连接成功!”);
   db.collection(“age”).remove({
     “_id”: 1
   }, function(err, result) {
     if (err) {
       console.log(‘Error:’ + err);
       return;
     }
     //console.log(result);
     //关闭数据库
     db.close();
   });
 });

6.关闭数据库

js
 db.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值