第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

$ 帶 upsert 的位置更新運(yùn)算符

$ 帶 upsert 的位置更新運(yùn)算符

慕姐4208626 2022-12-09 16:42:32
假設(shè)我有一系列商店:[  {    "_id": 0,    "items": [      {"_id": 3, "price": 10}    ]  },  {    "_id": 1,    "items": []  },  {    "_id": 2  }]我想將price商店中的商品 3 更新為 30,如果該商店中沒(méi)有商品,則在商店中插入一個(gè)新商品和/或在必要時(shí)插入一個(gè)新商店:商店 0:僅更新商品商店 1:附加{"_id": 3, "price": 30}到商店 1 的items商店 2:將商店 2 設(shè)置items為[{"_id": 3, "price": 30}]店鋪3:插入文件{"_id": 3, "items": [{"_id": 3, "price": 30}]}換句話(huà)說(shuō),我想:collection.updateOne({_id: <shopId>, 'items._id': 3}, {$set: {'items.$.price': 30}})如果該項(xiàng)目存在(商店 0)collection.updateOne({_id: <shopId>}, {$push: {items: {_id: 3, price: 30}}}, {upsert: true})如果沒(méi)有(商店 1 到 3)這有點(diǎn)像$with upsert,但文檔明確指出upsert不能與它一起使用:不要將位置運(yùn)算符$與 upsert 操作一起使用,因?yàn)椴迦雽⑹褂?作為插入文檔中的字段名稱(chēng)。$[<identifier>]也不起作用:如果 upsert 操作不包括完全相等匹配并且沒(méi)有找到匹配的文檔來(lái)更新,則 upsert 操作將出錯(cuò)。有沒(méi)有辦法不用多次訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)就可以做到這一點(diǎn)?我嘗試過(guò)的事情:// Updating the path 'items' would create a conflict at 'items'collection.updateOne(  {_id: 0, 'items._id': 3},  {$set: {'items.$.price': 30}, $setOnInsert: {items: []}})// $[<identifier>] with upsert doesn't work// The path 'items' must exist in the document in order to apply array updates.collection.updateOne(  {_id: 2},  {$set: {'items.$[item].price': 30}},  {arrayFilters: [{'item._id': 3}], upsert: true})// Updating the path 'items' would create a conflict at 'items'collection.updateOne(  {_id: 0},  {$set: {'items.$[item].price': 30}, $setOnInsert: {items: []}},  {arrayFilters: [{'item._id': 3}], upsert: true})
查看完整描述

1 回答

?
哆啦的時(shí)光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊

正如D. SM所說(shuō),您可以bulkWrite一次完成多項(xiàng)操作:

const shopId = 0

collection.bulkWrite([

  // Remove any existing item

  {

    updateOne: {

      filter: {_id: shopId},

      update: {$pull: {items: {_id: 3}}}

    }

  },

  // Add the item with the updated price to the shop

  {

    updateOne: {

      filter: {_id: shopId},

      update: {

        $push: {items: {_id: 3, price: 30}}

      },

      upsert: true

    }

  }

])


查看完整回答
反對(duì) 回復(fù) 2022-12-09
  • 1 回答
  • 0 關(guān)注
  • 118 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)