0
我需要在mongodb中更新記錄,其中新值取決於記錄中另一個字段的值。根據字段值在1個查詢中運行2個mongodb更新
例如獲得以下幾方面收集
{id: 1, list: []}
{id: 2, list: [6]}
{id: 3, list: []}
{id: 4, list: [6]}
{id: 5, list: []}
我希望能夠說:
if ('id' is in [1, 3, 5]) => add the value '6' to 'list'
else => remove the value '6' from 'list'
的結果將是:
{id: 1, list: [6]}
{id: 2, list: []}
{id: 3, list: [6]}
{id: 4, list: []}
{id: 5, list: [6]}
這可能在2完成更新查詢,如下所示,但我試圖在1:
db.collection.update({$in: [1, 3, 5]}, {$addToSet: {list: 6}})
db.collection.update({$in: [2, 4]}, {$pull: {list: 6}})
代碼是用Java編寫的。
我有{$ in:[2,4]的唯一原因是[2,4]不一定是[1,3,5]的補充。它可能只是[2]。 – ben39
如果可能的話,最好不要使用$ nin或任何否定運算符。 –
@RaxitSheth如果您不是否定布爾或低選擇性字段,否則使用否定屬性是可以的,否則運算符仍然可以使用覆蓋索引。 – Sammaye