mongodb 如何使用Mongoose将现有对象保存在集合中?

i5desfxk  于 2022-11-03  发布在  Go
关注(0)|答案(1)|浏览(229)

下面的JSON是我想保存MongoDB集合的一个例子,其中的键应该被用作_id
我只能想到一个非常复杂的方法来实现这一点,我将循环对象和子循环嵌套的对象,并手动插入_id

const customerObj = await customerDocument.create({ _id: '5434', ...customerColl['5434'] });

我有+10000的这个,所以不能用手来做。

问题

如何使用Mongoose将这样的现有对象保存在集合中?

{
   "5434": {
      "name": "test 1",
      "status": "active",
      "address": {
         "1467": {
            "comment": ""
         }
      },
      "contact": {
         "3235": {
            "firstname": ""
         }
      }
   },
   "6000": {
      "name": "test2",
      "status": "active",
      "address": {
         "1467": {
            "comment": ""
         }
      },
      "contact": {
         "3235": {
            "firstname": ""
         }
      }
   }
}
68de4m5k

68de4m5k1#

您应该能够使用for-in循环并枚举值,如下所示:

for (const id in customerColl) {
    await customerDocument.create({ _id: id, ...customerColl[id] });
}

但是,由于您有10000多个对象,这可能会非常慢...谢天谢地,mongoose允许我们进行批量插入/写入:

const docs = Object.keys(customerColl) // get the keys... kinda like for-in loop
    .map((id) => ({ _id: id, ...customerColl[id] })); // map to docs

await customerDocument.insertMany(docs);

相关问题