将对象数组插入 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的主要内容,如果未能解决你的问题,请参考以下文章