将对象数组插入 MongoDB

Posted

技术标签:

【中文标题】将对象数组插入 MongoDB【英文标题】:Insert array of objects into MongoDB 【发布时间】:2016-08-21 15:20:41 【问题描述】:

我想知道如何使用自己的预定义 _id 值将对象数组插入到 Mongo 集合“根级文档”中。

我已经尝试过db.MyCollection.insert(array);,但它会在 MongoDB 中的一个生成的 _id 下创建嵌套文档。

var array = [

       _id: 'rg8nsoqsxhpNYho2N',
        goals: 0,
        assists: 1,
        total: 1                  ,


       _id: 'yKMx6sHQboL5m8Lqx',
        goals: 0,
        assists: 1,
        total: 1                  ];

db.MyCollection.insert(array);

我想要什么

【问题讨论】:

db.MyCollection.insert(array) 应该可以工作。您收到任何错误消息吗? 插入过程有效,我正在收集数据,但我想在“根级”有对象,现在它们被插入到“0”下:,“1”: 等等。我想用我的 _id 值将我的所有对象作为“根级”文档插入 使用您向我们展示的文档,您无法获得该结果。 @sportsdiehard as user3100115 说 db.collectionName.insert(array) 对你有用,尝试使用 mongo shell 进行插入 我看到您在我发布答案后编辑了您的问题。你试过了吗?此外,您不应使用屏幕截图发布,请将其粘贴到问题正文中。 【参考方案1】:

db.collection.insertMany() 是你所需要的(从 3.2 开始支持):

db.users.insertMany(
   [
      name: "bob", age: 42, status: "A", ,
      name: "ahn", age: 22, status: "A", ,
      name: "xi", age: 34, status: "D", 
   ]
)

输出:


    "acknowledged" : true,
    "insertedIds" : [ 
        ObjectId("57d6c1d02e9af409e0553dff"), 
        ObjectId("57d6c1d02323d119e0b3c0e8"), 
        ObjectId("57d6c1d22323d119e0b3c16c")
    ]

【讨论】:

有没有办法“插入”许多类似的东西?我想每次都推送一个数组,但大多数项目都会存在【参考方案2】:

为什么不遍历数组对象,一次插入一个?

array.forEach((item) => db.MyCollection.insert(item));

【讨论】:

我已经这样做了,但它不允许我在插入中添加“结果/成功”功能【参考方案3】:

通过此链接以您想要的方式获得确切的结果:

https://docs.mongodb.org/manual/tutorial/insert-documents/#insert-a-document

【讨论】:

【参考方案4】:

您可以使用MongoDB Bulk 在一次调用数据库中插入多个文档。

首先遍历您的数组并为每个项目调用bulk 方法:

bulk.insert(item)

循环结束后,调用execute:

bulk.execute()

查看参考文档以了解更多信息。

【讨论】:

以上是关于将对象数组插入 MongoDB的主要内容,如果未能解决你的问题,请参考以下文章

将对象数组转换为mongodb中的字符串数组

如何在 MongoDB 的嵌入式数组对象中插入 json 对象?

在嵌套数组 mongodb nodejs 中插入对象

MongoDB - 如何在数组中更新或插入对象

Array.push(Object) 插入对象数组

如何将一个对象插入到mongo数组中的另一个对象中