目录
- 1. 用法(Usages)
- 1.1 匹配某个字段是否存在
- 1.2 匹配某个字段为 null
- 1.3 匹配某个字段不为 null 且存在
- 1.4 匹配某个字段为 null 或不存在
- 2. 示例(Examples)
- 2.1 匹配 address 字段是否存在
- 2.2 匹配 address 字段为 null
- 2.3 匹配 address 字段不为 null 且存在
- 2.4 匹配 address 为 null 或 不存在
1. 用法(Usages)
db.collectionName
与 db.getCollection('collectionName')
都表示指定某个 Collection
。
1.1 匹配某个字段是否存在
// 仅查询某个字段查询存在的记录db.collectionName.find({"field name":{$exists:true}});// 仅查询某个字段查询不存在的记录db.collectionName.find({"field name":{$exists:false}});
1.2 匹配某个字段为 null
// 仅查询某个字段为空的记录// 既然为 null 那么就表示该字段一定存在db.collectionName.find({"field name":{$exists: true, $eq: null}})
- 需要注意与
1.4 过滤某个字段为 null 或不存在
的区别; - 在
Mongo
中,为null
的数据必存在;
1.3 匹配某个字段不为 null 且存在
// 仅查询某个字段为不为空且存在的记录db.collectionName.find({"field name":{$ne:null}});
【注】其实就是 1.4 过滤某个字段为 null 或不存在
的取反。
1.4 匹配某个字段为 null 或不存在
会把字段 不存在
和 字段为 null
的数据都匹配到。
db.collectionName.find({"field name":null});// 与上面语句一样的效果db.collectionName.find({"field name":{$eq:null}});
2. 示例(Examples)
插入测试数据:
db.getCollection("null_demo").insert( {name: "张三",gender: 0,address: "上海市"} );db.getCollection("null_demo").insert( {name: "李四",gender: 0 // 没有 address 字段} );db.getCollection("null_demo").insert( {name: "王五",gender: 0,address: null // address 字段为 null} );
查询插入的测试数据:
db.null_demo.find():
查询结果:
_id | name | gender | address |
---|---|---|---|
64681d503902000019003aa2 | 张三 | 0 | 上海市 |
64681e003902000019003aa3 | 李四 | 0 | (N/A) |
64681e1d3902000019003aa4 | 王五 | 0 | (Null) |
【注】N/A
:不适用的(Not Applicable
)。
2.1 匹配 address 字段是否存在
// 仅查询某个字段查询存在的记录db.null_demo.find({"address":{$exists:true}});
输出如下:
_id | name | gender | address |
---|---|---|---|
64681d503902000019003aa2 | 张三 | 0 | 上海市 |
64681e1d3902000019003aa4 | 王五 | 0 | (Null) |
// 仅查询某个字段查询不存在的记录db.null_demo.find({"address":{$exists:false}});
输出如下:
_id | name | gender |
---|---|---|
64681e003902000019003aa3 | 李四 | 0 |
2.2 匹配 address 字段为 null
// 仅查询某个字段为空的记录db.null_demo.find({"address":{$exists: true, $eq: null}})
输出如下:
_id | name | gender | address |
---|---|---|---|
64681e1d3902000019003aa4 | 王五 | 0 | (Null) |
2.3 匹配 address 字段不为 null 且存在
// 仅查询某个字段为不为空且存在的记录db.null_demo.find({"address":{$ne:null}});
输出如下:
_id | name | gender | address |
---|---|---|---|
64681d503902000019003aa2 | 张三 | 0 | 上海市 |
2.4 匹配 address 为 null 或 不存在
db.null_demo.find({"address":null});// 与上面语句一样的效果db.null_demo.find({"address":{$eq:null}});
输出如下:
_id | name | gender | address |
---|---|---|---|
64681e003902000019003aa3 | 李四 | 0 | (N/A) |
64681e1d3902000019003aa4 | 王五 | 0 | (Null) |
End!
个人博客:Roc’s Blog