MongoDB 中 $type 操作符是基于 BSON 类型来检索集合中匹配的数据类型,并返回结果。MongoDB 中可以使用的类型如下表所示:
类型 | 数字 | 备注 |
---|---|---|
Double | 1 | |
String | 2 | 字符串类型 |
Object | 3 | |
Array | 4 | 数组类型 |
Binary data | 5 | |
Undefined | 6 | 已废弃。 |
Object id | 7 | |
Boolean | 8 | 布尔值 |
Date | 9 | 日期类型 |
Null | 10 | |
Regular Expression | 11 | |
JavaScript | 13 | |
Symbol | 14 | |
JavaScript (with scope) | 15 | |
32-bit integer | 16 | |
Timestamp | 17 | |
64-bit integer | 18 | |
Min key | 255 | Query with -1. |
Max key | 127 |
实例:查询name字段,且该字段数据类型为字符串。如下:
> db.users.find() { "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" } { "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" } { "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" } { "_id" : ObjectId("5e494917cd56e9badcee416d"), "id" : 4, "name" : "赵六" } { "_id" : ObjectId("5e49492acd56e9badcee416e"), "id" : 5, "name" : "洪七" } # 查询name类型为string的文档,类型编号为2 > db.users.find({name:{$type:2}}) { "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" } { "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" } { "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" } { "_id" : ObjectId("5e494917cd56e9badcee416d"), "id" : 4, "name" : "赵六" } { "_id" : ObjectId("5e49492acd56e9badcee416e"), "id" : 5, "name" : "洪七" } # 查询name类型为string的文档 > db.users.find({name:{$type:"string"}}) { "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" } { "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" } { "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" } { "_id" : ObjectId("5e494917cd56e9badcee416d"), "id" : 4, "name" : "赵六" } { "_id" : ObjectId("5e49492acd56e9badcee416e"), "id" : 5, "name" : "洪七" }