Mongodb操作符$exists包含或不包含某个字段

$exists语法

{ “field”: { “$exists”: <boolean> } }

说明

当<boolean>的值为true时,则匹配数据库中含有field这个字段的文档,也包括field这个字段为空的文档。如果<boolean>的值为false,那么查询只返回不包括该field该字段的文档。简单的说,$exists 就是判断一个字段是否存在。

MongoDB中的 $exists 和SQL操作符 exists 不是一个等同的概念。对于SQL的 exists ,涉及到了 $in 这个操作符的概念。

实例

查看下面的例子:

db.test.find({a:{$exists:true,$nin:[5,15]}})

上面这个查询输出test数据库中存在a这个字段,而且qty的值不等于5或15的所有文档。

存在Null值时

假设records数据库中存在如下文档:
{ a: 5, b: 5, c: null }
{ a: 3, b: null, c: 8 }
{ a: null, b: 3, c: 9 }
{ a: 1, b: 2, c: 3 }
{ a: 2, c: 5 }
{ a: 3, b: 2 }
{ a: 4 }
{ b: 2, c: 4 }
{ b: 2 }
{ c: 6 }

用 $exists: true 查询

用 $exists 操作符对字段 a 进行查询:
>db.records.find( { a: { $exists: true } } )

上面的查询将输出包含字段 a 或者字段 a 的值为null的文档结果:
{ a: 5, b: 5, c: null }
{ a: 3, b: null, c: 8 }
{ a: null, b: 3, c: 9 }
{ a: 1, b: 2, c: 3 }
{ a: 2, c: 5 }
{ a: 3, b: 2 }
{ a: 4 }

用 $exists: false 查询

用 $exists 操作符对字段 b 进行查询:
db.records.find( { b: { $exists: false } } )

上面的查询将输出不包含字段 b 的文档:
{ a: 2, c: 5 }
{ a: 4 }
{ c: 6 }

此条目发表在服务器分类目录,贴了标签。将固定链接加入收藏夹。

发表回复