在更新查询中使用$ not或$ ne

时间:2015-12-22 10:06:57

标签: mongodb updates

我应该在查询中使用$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}} ThisNewestInfo数组中UpdatedInfo数组中已存在NewInfo },则$not想要更新文档。试着理解$neUpdatedInfo之间的区别。

还有: 如果文档在开头不包含UpdatedInfo字段?我应该如何更改上面的更新查询?这意味着,如果UpdatedInfo不存在,则会添加ThisNewestInfo,稍后会在第二天检查再次更新文档时是否已存在www.

1 个答案:

答案 0 :(得分:3)

实际上取决于你的收藏。

此场景中 $ ne $ not 之间的主要区别在于, $ not 执行逻辑分离。也就是说,如果您的文档没有UpdatedInfo字段,使用$ not会在使用 $ ne 时推送文档。该文档不会发生任何事情。

因此,如果您的所有收藏文件都有UpdatedInfo字段,那么最好使用 $ ne

修改

根据您的编辑,您提到的UpdatedInfo可能不在文档中。在这种情况下,你应该使用$ not。 $ ne将无法更新没有UpdatedInfo字段的文档。

请记住:$ not不检查是否存在键和值,而$ ne仅检查值并忽略在查询中没有特定键的文档。