【问题标题】:Insert array of objects into MongoDB将对象数组插入 MongoDB
【发布时间】:2025-12-20 14:50:12
【问题描述】:

我想知道如何使用自己的预定义 _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 进行插入
  • 我看到您在我发布答案后编辑了您的问题。你试过了吗?此外,您不应使用屏幕截图发布,请将其粘贴到问题正文中。

标签: javascript json mongodb


【解决方案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()
    

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

    【讨论】: