$type 操作符
$type 操作符是基于 BSON 类型来检索集合中匹配的数据类型,并返回结果。
常用 BSON 类型对照表
| 类型 | 数字 | 备注 |
|---|---|---|
| Double | 1 | |
| String | 2 | |
| Object | 3 | |
| Array | 4 | |
| Binary data | 5 | |
| Undefined | 6 | 已废弃 |
| ObjectId | 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 |
示例
如果想获取 “persons” 集合中 name 为 String 类型的数据,可以使用以下命令:
db.persons.find({"name" : {$type : 2}})Code language: PHP (php)
或
db.persons.find({"name" : {$type : 'string'}})Code language: PHP (php)
测试数据
db.persons.insert({name:123,age:22})
db.persons.insert({name:456,age:42})
db.persons.find()
db.persons.find({name:123})
db.persons.find({name:'张三'})
db.persons.find({name:{$type:'string'}})
db.persons.find({name:{$type: 1}})Code language: CSS (css)
补充说明
- $type 可以用数字编号或字符串别名来指定类型,效果相同
- 字符串别名写法可读性更好,推荐使用
- 同一个集合中不同文档的同一个字段可以是不同类型,这是 MongoDB 灵活性的体现
- $type 查询时只会匹配指定类型的文档,其他类型的文档会被过滤掉
- 上例中
$type: 1匹配 Double 类型,所以 name 为数字的文档会被查出来
Previous: MongoDB条件查询
Next: Limit与Skip方法