我应该在查询中使用$not
或$ne
:
Mytable.update({ TheThing: Thing,
'UpdatedInfo.NewInfo': {$ne: ThisNewestInfo} }, {
$push: {
UpdatedInfo: {
TheDate: ThisDate,
NewInfo: ThisNewestInfo,
Past: OriginalInfo
}
}
},
function (err, result) {
if (err){
throw new Error(err.message);
}
}
如果我only
<{1}} 1}} ThisNewestInfo
数组中UpdatedInfo
数组中已存在NewInfo
1>},则$not
想要更新文档。试着理解$ne
和UpdatedInfo
之间的区别。
还有:
如果文档在开头不包含UpdatedInfo
字段?我应该如何更改上面的更新查询?这意味着,如果UpdatedInfo
不存在,则会添加ThisNewestInfo
,稍后会在第二天检查再次更新文档时是否已存在www.
。
答案 0 :(得分:3)
实际上取决于你的收藏。
此场景中 $ ne 和 $ not 之间的主要区别在于, $ not 执行逻辑分离。也就是说,如果您的文档没有UpdatedInfo
字段,使用$ not会在使用 $ ne 时推送文档。该文档不会发生任何事情。
因此,如果您的所有收藏文件都有UpdatedInfo
字段,那么最好使用 $ ne 。
修改强>
根据您的编辑,您提到的UpdatedInfo可能不在文档中。在这种情况下,你应该使用$ not。 $ ne将无法更新没有UpdatedInfo字段的文档。
请记住:$ not不检查是否存在键和值,而$ ne仅检查值并忽略在查询中没有特定键的文档。