MongoDB $type 操作符
MongoDB 中 $type 是一个条件操作符。$type 基于 BSON 类型来检索集合中匹配的数据类型,并返回结果。
由于 MongoDB 对于文档(记录)的格式要求比较自由,所以同一个KEY(字段)中可以包含不同类型的数值。$type 用于过滤指定类型的数据。
例如,以下的 MongoDB 数据集合:
> db.col.find() { "_id" : ObjectId("56066542ade2f21f36b0313a"), "x" : 666 } { "_id" : ObjectId("56066542ade2f21f36b0315a"), "x" : true } { "_id" : ObjectId("56066542ade2f21f36b0317a"), "x" : false } { "_id" : ObjectId("56066542ade2f21f36b0313a"), "x" : "baidu.com" } { "_id" : ObjectId("56066542ade2f21f36b0313a"), "x" : 888 } { "_id" : ObjectId("56066542ade2f21f36b0313a"), "x" : "codebaoku.com" }
其中 KEY "x" 中包含:布尔型,整形和字符串 三种数据类型。我们就可以通过 $type 检索出指定类型的数据。
1. $type 使用的类型
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 |
2. $type 查询文档的语法
MongoDB 使用 $type 查询数据的语法格式如下:
db.collection.find({KEY : {$type : TYPE_NAME}})
- KEY :键名。
- TYPE_NAME :类型名称 或者 类型编号,参照上表,比如字符串的类型名称为 String,类型编号为 2。
3. $type 查询文档的范例
例如,MongoDB col 数据集合:
> db.col.find() { "_id" : ObjectId("56066542ade2f21f36b0313a"), "x" : 666 } { "_id" : ObjectId("56066542ade2f21f36b0315a"), "x" : true } { "_id" : ObjectId("56066542ade2f21f36b0317a"), "x" : false } { "_id" : ObjectId("56066542ade2f21f36b0313a"), "x" : "baidu.com" } { "_id" : ObjectId("56066542ade2f21f36b0313a"), "x" : 888 } { "_id" : ObjectId("56066542ade2f21f36b0313a"), "x" : "codebaoku.com" }
如果想获取 "col" 集合中 x 为 String 的数据,你可以使用以下命令:
db.col.find({"title" : {$type : 2}}) 或 db.col.find({"title" : {$type : 'string'}})
输出结果为:
{ "_id" : ObjectId("56066542ade2f21f36b0313a"), "x" : "baidu.com" } { "_id" : ObjectId("56066542ade2f21f36b0313a"), "x" : "codebaoku.com" }
MongoDB 复制是将数据库的数据同步到多个服务器的过程。MongoDB 复制可以在多个服务器上提供数据库副本,不仅提高了数据库服务的可用性,而且可以保证数据的安全。MongoDB 主从复制操作步骤如下:1、关闭正在运行的MongoDB服务器。2、通过指定 --replSet 选项来启动mongoD。