小编fas*_*ros的帖子

MongoDB - 在对多个文档执行“如果不存在则插入”操作后获取已插入和现有文档的 ID

如果它们不存在,我必须插入多个文档,但重要的是,在查询结果中,我需要有插入的和已经存在的项目的 ID。

我正在尝试以下bulkWrite操作:

// external_id is a unique id other than the mongo _id
let items = [
   {external_id: 123, name: "John"},
   {external_id: 456, name: "Mike"},
   {external_id: 789, name: "Joseph"}
];
db.collection("my_collection")
  .bulkWrite(
    items.map((item) => {
      return {
        updateOne: {
          filter: { external_id: item.external_id },
          update: { $setOnInsert: item},
          upsert: true,
        },
      };
    })
  );
Run Code Online (Sandbox Code Playgroud)

问题是BulkWriteResult仅返回_id中插入项目的upsertedIds,而对于现有项目仅返回nMatched数字。

我想到的另一个解决方案是使 (1) 一个findid 数组,(2) 检查已经存在的结果,以及 (3) 然后insertMany检查新的结果:

 let ids = …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query

6
推荐指数
0
解决办法
305
查看次数

标签 统计

mongodb ×1

mongodb-query ×1