MongoDB基础之文档操作

2022-06-07 18:09:40

一、插入文档

文档的数据结构和>

所有存储在集合中的数据都是 BSON 格式。BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。

1、语法

1、db.collection.insert():>

db.collection.insert(document)

2、db.collection.insertOne(): 用于向集合插入一个新文档,语法格式如下:

db.collection.insertOne(
   <document>,
   {
      writeConcern: <document>
   }
)

3、db.collection.insertMany(): 用于向集合插入一个多个文档,语法格式如下:

db.collection.insertMany(
   [ <document 1> , <document 2>, ... ],
   {
      writeConcern: <document>,
      ordered: <boolean>
   }
)

参数说明:

    document:要写入的文档。writeConcern:写入策略,默认为 1,即要求确认写操作,0 是不要求。ordered:指定是否按顺序写入,默认 true,按顺序写入。

    2、实例

    以下文档可以存储runoob>

    >db.col.insert({title: 'MongoDB 教程', 
        description: 'MongoDB 是一个 Nosql 数据库',
        by: '菜鸟教程',
        url: 'http://www.runoob.com',
        tags: ['mongodb', 'database', 'NoSQL'],
        likes: 100
    })

    以上实例中 col 是我们的集合名,如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档。

    我们也可以将数据定义为一个变量,如下所示:

    > document=({title: 'MongoDB 教程', 
        description: 'MongoDB 是一个 Nosql 数据库',
        by: '菜鸟教程',
        url: 'http://www.runoob.com',
        tags: ['mongodb', 'database', 'NoSQL'],
        likes: 100
    });

    执行插入操作:

    > db.col.insert(document)
    WriteResult({ "nInserted" : 1 })
    >

    插入文档你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。

    二、更新文档

    update() 和 save() 方法来更新集合中的文档。接下来让我们详细来看下两个函数的应用及其区别。

    1、update()>

    update() 方法用于更新已存在的文档。语法格式如下:

    db.collection.update(
       <query>,
       <update>,
       {
         upsert: <boolean>,
         multi: <boolean>,
         writeConcern: <document>
       }
    )

    参数说明:

      query : update的查询条件,类似sql update查询内where后面的。update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入新对象,true为插入,默认是false,不插入。multi : 可选,mongodb 默认是false,只更新找到的第一条记录。如果这个参数为true,就把按条件查出来多条记录全部更新。writeConcern :可选,抛出异常的级别。

      2、update()>

      接着我们通过 update() 方法来更新标题(title):

      >db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
      WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   # 输出信息
      > db.col.find().pretty()
      {
              "_id" : ObjectId("56064f89ade2f21f36b03136"),
              "title" : "MongoDB",
              "description" : "MongoDB 是一个 Nosql 数据库",
              "by" : "菜鸟教程",
              "url" : "http://www.runoob.com",
              "tags" : [
                      "mongodb",
                      "database",
                      "NoSQL"
              ],
              "likes" : 100
      }
      >

      可以看到标题(title)由原来的 "MongoDB 教程" 更新为了 "MongoDB"。

      以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true。

      >db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})

      3、save()>

      save() 方法通过传入的文档来替换已有文档,_id 主键存在就更新,不存在就插入。语法格式如下:

      db.collection.save(
         <document>,
         {
           writeConcern: <document>
         }
      )

      参数说明:

        document : 文档数据。writeConcern :可选,抛出异常的级别。

        4、save()>

        以下实例中我们替换了 _id 为 56064f89ade2f21f36b03136 的文档数据:

        >db.col.save({         "_id" : ObjectId("56064f89ade2f21f36b03136"),
            "title" : "MongoDB",
            "description" : "MongoDB 是一个 Nosql 数据库",
            "by" : "Runoob",
            "url" : "http://www.runoob.com",
            "tags" : [
                    "mongodb",
                    "NoSQL"
            ],
            "likes" : 110
        })

        5、更多实例

        只更新第一条记录:

        db.col.update(>

        全部更新:

        db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );

        只添加第一条:

        db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );

        全部添加进去:

        db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );

        全部更新:

        db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );

        只更新第一条记录:

        db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

        三、删除文档

        MongoDB>

        1、语法

        remove()>

        db.collection.remove(
           <query>,
           <justOne>
        )

        如果你的 MongoDB 是 2.6 版本以后的,语法格式如下:

        db.collection.remove(
           <query>,
           {
             justOne: <boolean>,
             writeConcern: <document>
           }
        )

        参数说明:

          query :(可选)删除的文档的条件。justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。writeConcern :(可选)抛出异常的级别。

          2、实例

          接下来我们移除>

          >db.col.remove({'title':'MongoDB 教程'})
          WriteResult({ "nRemoved" : 2 })           # 删除了两条数据
          >db.col.find()
          ……                                        # 没有数据

          如果你只想删除第一条找到的记录可以设置 justOne 为 1,如下所示:

          >db.COLLECTION_NAME.remove({'title':'MongoDB 教程'},1)

          如果你想删除所有数据,可以使用以下方式(类似常规 SQL 的 truncate 命令):

          >db.col.remove({})
          >db.col.find()

          到此这篇关于MongoDB文档操作的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持易采站长站。