我想知道如果更新中使用的值不存在于数组中,是否可以仅通过一项操作(或仅一项命令)来更新 mongodb 内的文档。
示例 mongodb 文档:
{
regs : {
someid : 12345,
dataArray : [ { id : 1 }, { id : 43 }, { id : 11 }]
}
}
Run Code Online (Sandbox Code Playgroud)
现在我只想更新 dataArray 内的 id 尚未使用的情况,例如:
db.regs.update({ someid : 12345 }, { $push : { dataArray : { id : INT }}})
Run Code Online (Sandbox Code Playgroud)
使用上面的行可以检查{ id : INT }我的数组中是否已存在,并且仅在不存在时才进行更新?
有几种方式。例如,您可以使用查询匹配感兴趣的文档:
db.regs.update(
{someid : 12345, 'dataArray.id': {$ne: INT}},
{$push : { dataArray : {id : INT }}}
)
Run Code Online (Sandbox Code Playgroud)
或使用以下命令执行更新addToSet:
db.regs.update(
{someid : 12345},
{$addToSet : {dataArray : {id : INT }}}
)
Run Code Online (Sandbox Code Playgroud)