因此,我尝试查找所有设置了字段且字段不为空的记录。
我尝试使用$exists
,但是根据MongoDB documentation,,此查询将返回等于null的字段。$exists
与包含存储空值的字段的文档匹配。
所以我现在假设我必须这样做:
db.collection.find({ "fieldToCheck" : { $exists : true, $not : null } })
然而,每当我尝试这样做时,我都会得到错误[invalid use of $not]
。有人知道如何查询吗?
8条答案
按热度按时间olhwl3o21#
使用
$ne
(表示“不相等”)iyr7buue2#
假设我们有一个如下所示的集合:
我们想知道瓶场是否存在?
回答:
vsnjm48y3#
我发现这对我很有效
mnowg1ta4#
此注解编写于2021,适用于MongoDB 5.X和更早版本。
如果您重视查询性能****,则永远不要使用$exists(或仅在查询的字段上具有稀疏索引时使用)。稀疏索引应与查询的条件匹配,即如果搜索**$exists:true**,则稀疏索引应在字段上:{$exists:true},如果您查询**$exists:true**,则稀疏索引应在字段上:{$exists:false}
请用途:
或
这将要求您在集合的每个文档中包含fieldToCheck,但是,性能将得到极大的提高。
khbbv19g5#
plicqrtu6#
我尝试将其转换为布尔条件,其中如果具有表名的文档已存在,则它将追加到同一文档中,否则它将创建一个。
table_name是我试图用来查找文档的变量
2vuwiymt7#
聚集体示例
https://mongoplayground.net/p/edbKil4Zvwc
brccelvz8#
在我的例子中,我只将新字段
isDeleted : true
添加到已删除的字段中。因此,对于所有其他记录,没有
isDeleted
字段,所以我想获取isDeleted
不存在或为false的所有字段。