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。