MongoDB元素查询操作符

元素查询操作符(Element Query Operators),查询文档中字段的属包括字段是否存在以及字段的数据类型。
元素操作符 作用 参数
$exists 字段是否存在 {field:{$exists:<boolean>}}
$type 选择字段值为指定BSON数据类型编号的文档 {field:{$type:<BSON type>}}

$exists实例
 
   
var db = connect("localhost:27017/test");
db.col.drop();
var bulk = db.col.initializeUnorderedBulkOp();
// 测试数据
var doc1 = {name : "joe", age : 20}
bulk.insert(doc1);
var doc2 = {name : "joe", age : 31}
bulk.insert(doc2);
var doc3 = {name : "jack", age : 21}
bulk.insert(doc3);
var doc4 = {name : "John", age : null}
bulk.insert(doc4);
//执行插入操作
bulk.execute();
print("========find - $exists 元素操作符的使用=======")
/*
$exists 查询存在(或不存在)指定字段的文档
{ field: { $exists: <boolean> } }
*/
var cursor = db.col.find(
{
age: { $exists:true }
}
);
printjson(cursor.toArray())
运行结果
 
   
C:\>mongo --quiet find_exists.js
========find $exists 元素操作符的使用=======
[
{
"_id" : ObjectId("56e56c6095532d414b476d17"),
"name" : "joe",
"age" : 20
},
{
"_id" : ObjectId("56e56c6095532d414b476d18"),
"name" : "joe",
"age" : 31
},
{
"_id" : ObjectId("56e56c6095532d414b476d19"),
"name" : "jack",
"age" : 21
},
{
"_id" : ObjectId("56e56c6095532d414b476d1a"),
"name" : "John",
"age" : null
}
]

$type
$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  
$type使用:
 
    
var db = connect("localhost:27017/test");
db.col.drop();
var bulk = db.col.initializeUnorderedBulkOp();
// 测试数据
var doc1 = {name : "joe", age : 20}
bulk.insert(doc1);
var doc2 = {name : "joe", age : 31}
bulk.insert(doc2);
var doc3 = {name : "jack", age : 21}
bulk.insert(doc3);
var doc4 = {name : "John", age : null}
bulk.insert(doc4);
//执行插入操作
bulk.execute();
print("========find - $exists 元素操作符的使用=======")
/*
$exists 查询存在(或不存在)指定字段的文档
{ field: { $exists: <boolean> } }
*/
var cursor = db.col.find(
{
age: { $type:1 }
}
);
printjson(cursor.toArray())
运行结果:
 
    
C:\>mongo --quiet find_type.js
========find $exists 元素操作符的使用=======
[
{
"_id" : ObjectId("56e56ebb16633fed001afe70"),
"name" : "joe",
"age" : 20
},
{
"_id" : ObjectId("56e56ebb16633fed001afe71"),
"name" : "joe",
"age" : 31
},
{
"_id" : ObjectId("56e56ebb16633fed001afe72"),
"name" : "jack",
"age" : 21
}
]

猜你喜欢

转载自blog.csdn.net/u022812849/article/details/51314760