簡體   English   中英

使用for循環貓鼬批量插入文檔

[英]insert document in bulk using for loop mongoose

為什么這不會為我插入20個文檔?

for (let i = 0; i <= 20; i++) {
  const [updated] = await Promise.all([
    Job.findOneAndUpdate(
      { _id: id },
      {
        $set: {
          status: 'something'
        }
      },
      { upsert: true, new: true }
    ),
    User.findOneAndUpdate(
      { _id: userId },
      {
        $set: { assigned: true }
      },
      { upsert: true, new: true }
    )
  ])
}

還是我應該使用減少和承諾解決? 上面的查詢只是沒有插入20個文檔,而是插入了一個文檔。

如果您有id數組,則可以使用bulkWrite

const id = ['844646464', '45646546546', '45646546546']

Model.bulkWrite(
  req.body.idArray((id) => {
    return ({
      updateOne: {
        filter: { _id: id },
        update: { $set: { status: 'something' } },
        upsert: true
      }
    })
  })
})

它將創建一個類似這樣的請求

bulkWrite([
   { updateOne: { filter: { _id: id }, update: { $set: { status: 'something' } } },
   { updateOne: { filter: { _id: id }, update: { $set: { status: 'something' } } },
   { updateOne: { filter: { _id: id }, update: { $set: { status: 'something' } } } 
])

它以單個響應有效地執行對服務器的單個請求中的所有更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM