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" : "洪七" }