我想在猫鼬中使用upsert插入文档

时间:2020-09-11 20:19:12

标签: node.js mongoose

我正在从外部api获取数据,并且如果它们尚不存在,我想插入多个记录。我正在创建这样的对象数组:

data=[
  {
    match_id: 212167781,
    player1Id: 129753806,
    player2Id: 129753811,
    player1Details: '5f070c8f79f62c00042b0cd8',
    player2Details: '5f3267fe6a0f891b3604b999'
  },
  {
    match_id: 212167782,
    player1Id: 129753799,
    player2Id: null,
    player1Details: '5f070ade79f62c00042b0cd6'
  }
]

例如,现在如果第二条记录不存在,那么我希望将其插入,并且我尝试了upsert,但是什么也没有发生。请帮忙。

1 个答案:

答案 0 :(得分:1)

您应该能够使用一个简单的循环并将Model.findOneAndUpdateupsert option结合使用:

async function upsertMany(data) {

   for(const entry of data) {
      await YourModel.findOneAndUpdate(entry, entry, { upsert: true });
   }

}

// call this with your data-array
await upsertMany(data);
相关问题