Mongodb 在更新查询中使用$not或$ne
我应该在查询中使用Mongodb 在更新查询中使用$not或$ne,mongodb,updates,Mongodb,Updates,我应该在查询中使用$not还是$ne: Mytable.update({ TheThing: Thing, 'UpdatedInfo.NewInfo': {$ne: ThisNewestInfo} }, { $push: { UpdatedInfo: { TheDate: ThisDate, NewInfo: ThisNewestInfo, Past: OriginalInfo } } }, funct
$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);
}
}
如果我只想在ThisNewestInfo
对象元素的UpdatedInfo
数组中已存在ThisNewestInfo
时更新文档。试图理解$not
和$ne
之间的区别
而且:
如果文档开头不包含
updateInfo
字段?我应该如何更改上面的更新查询?这意味着如果updateInfo
不存在,它会添加updateInfo
,然后,比如第二天,在再次更新文档时检查此新信息是否不存在。这实际上取决于您的收藏
在此场景中,$ne和$not之间的主要区别在于,$not执行逻辑析取。也就是说,如果您的文档没有updateInfo
字段,则使用$not将推送文档,而使用$ne则该文档不会发生任何情况
因此,如果您收集的所有文档都有updateInfo
字段,那么最好使用$ne
编辑
根据您提到的编辑,文档中可能不存在UpdateInfo。在这种情况下,您应该使用$not$ne将无法更新没有UpdateInfo字段的文档
记住:$not检查key和value是否存在,而$ne只检查value并忽略查询中没有特定key的文档。这实际上取决于您的集合
在此场景中,$ne和$not之间的主要区别在于,$not执行逻辑析取。也就是说,如果您的文档没有updateInfo
字段,则使用$not将推送文档,而使用$ne则该文档不会发生任何情况
因此,如果您收集的所有文档都有updateInfo
字段,那么最好使用$ne
编辑
根据您提到的编辑,文档中可能不存在UpdateInfo。在这种情况下,您应该使用$not$ne将无法更新没有UpdateInfo字段的文档
记住:$not检查key和value是否存在,而$ne只检查value并忽略查询中没有特定key的文档。但是如果文档开头不包含updateInfo
字段?这就是上面的更新查询所做的,这意味着如果updateInfo
不存在,它将添加updateInfo
,然后,比如说第二天,在再次更新文档时检查ThisNewestInfo
是否不存在。好的,谢谢,但我是否可以将上面的查询更改为首先考虑updateInfo
是否不存在,然后如果存在,则仅当ThisNewestInfo
不存在时才进行更新。但问题是,updateInfo
在开始时是“存在”的,但没有任何数组元素。是否要通过字段的存在而不是字段的值进行更新?如果updateInfo
为空,我想第一次向updateInfo
添加一个对象。如果updateInfo
中没有此newestinfo
,则以后只更新updateInfo
。如何进行此类查询?:)$push会在字段不存在的情况下创建一个新字段?但如果文档开头不包含updateInfo
字段?这就是上面的更新查询所做的,这意味着如果updateInfo
不存在,它将添加updateInfo
,然后,比如说第二天,在再次更新文档时检查ThisNewestInfo
是否不存在。好的,谢谢,但我是否可以将上面的查询更改为首先考虑updateInfo
是否不存在,然后如果存在,则仅当ThisNewestInfo
不存在时才进行更新。但问题是,updateInfo
在开始时是“存在”的,但没有任何数组元素。是否要通过字段的存在而不是字段的值进行更新?如果updateInfo
为空,我想第一次向updateInfo
添加一个对象。如果updateInfo
中没有此newestinfo,则以后只更新updateInfo
。您应该如何进行这样的查询?:)$push会在字段不存在时创建一个新字段?