zoukankan      html  css  js  c++  java
  • MongoDB(7)- 文档插入操作

    插入方法

    db.collection.insertOne()
    插入单条文档到集合中
    db.collection.insertMany()
    插入多条文档到集合中
    db.collection.insert()
    插入单条或多条文档到集合中

    insertOne() 语法格式

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

    只能传一个文档,不能是数组

    insertMany() 语法格式

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

    必传一个数组,即使是空数组

    insert() 语法格式

    db.collection.insert(
       <document or array of documents>,
       {
         writeConcern: <document>,
         ordered: <boolean>
       }
    )

    可以传单条文档或者文档数组

    writeConcern

    看着是一种出错捕捉机制,搞清楚要干嘛再更新吧

    ordered

    • true:对数组中的文档执行有序插入,其中一个文档发生错误,MongoDB 将返回而不处理数组中的其余文档(默认)
    • false:无序插入,其中一个文档发生错误,则继续处理数组中的其他文档

    三种 insert 方法的返回内容

    // 插入单条文档
    > db.test.insert({})
    WriteResult({ "nInserted" : 1 })
    
    // 插入多条文档
    > db.test.insert([])
    BulkWriteResult({
        "writeErrors" : [ ],
        "writeConcernErrors" : [ ],
        "nInserted" : 0,
        "nUpserted" : 0,
        "nMatched" : 0,
        "nModified" : 0,
        "nRemoved" : 0,
        "upserted" : [ ]
    })
    

    插入操作的重点知识

    • MongoDB 向集合里插入记录时,无须事先对数据存储结构进行定义,每个文档的数据结构都可以是不同的
    • 如果待插入的集合不存在,则插入操作会默认创建集合
    • MongoDB 中,插入操作以单个集合为目标
    • MongoDB 中的所有写入操作都是单个文档级别的原子操作

    插入不指定 _id 字段的文档

    db.test.insert( { item : "card", qty : 15 })

    MongoDB 会自动给它分配一个 _id

    db.test.find()
    { "_id" : ObjectId("60b4e2eeec0fd33d89e97a98"), "item" : "card", "qty" : 15 }

    这些 Objectld 值与执行操作时的机器和时间有关

    插入指定 _id 字段的文档

    值 _id 必须在集合中唯一,以避免重复键错误

    db.test.insert(
        { _id: 10, item: "box", qty: 20 }
    )
    
    db.test.find()
    { "_id" : 10, "item" : "box" , "qty": 20

    可以看到新插入文档的 id 值为设置的 id 值

    插入文档数组

    插入的多个文档无须具有相同的字段

    db.test1.insert(
        [
            { _id: 11, item: "pencil", qty: 50, type: "no.2" },
            { item: "pen", qty: 20 },
            { item: "eraser", qty: 25 }
        ]
    )
    • 的第一个文档包含一个 _id 字段和一个 type 字段
    • 第二个和第三个文档不包含 _id 字段
    • 因此,在插入过程中,MongoDB 将会为第二个和第三个文档创建默认 _id 字段
    db.test1.find()
    { "_id" : 11, "item" : "pencil", "qty" : 50, "type" : "no.2" }
    { "_id" : ObjectId("60b4e98fec0fd33d89e97a99"), "item" : "pen", "qty" : 20 }
    { "_id" : ObjectId("60b4e98fec0fd33d89e97a9a"), "item" : "eraser", "qty" : 25 }

    无序插入

    db.products.insert(
       [
         { _id: 20, item: "lamp", qty: 50, type: "desk" },
         { _id: 21, item: "lamp", qty: 20, type: "floor" },
         { _id: 22, item: "bulk", qty: 100 }
       ],
       { ordered: false }
    )

    如果在插入其中一个文档期间发生错误,MongoDB 会继续将其余文档插入数组中

    还有其他插入文档的方法

    需要添加 upsert: true 选项

    • db.collection.update()
    • db.collection.updateOne()
    • db.collection.updateMany()
    • db.collection.findAndModify()
    • db.collection.findOneAndUpdate()
    • db.collection.findOneAndReplace()

    不需要添加也可以插入文档

    • db.collection.save()
    • db.collection.bulkWrite()
  • 相关阅读:
    灌水专栏
    工程控制基础相关指标识图与记忆
    材料力学典型习题
    材料力学大学慕课汇总
    机械工程控制基础线性系统时域分析
    ccaa
    在电脑上使用听写,以说话代替打字
    李さんは森さんより若いです
    机械制造工艺基础
    大学慕课材料力学总结
  • 原文地址:https://www.cnblogs.com/poloyy/p/14747861.html
Copyright © 2011-2022 走看看