db.coll.find({j: {$ne: 3}, k: {$gt: 10} }); select * from coll where j <> 3 and k > 10
===============================================================================
$lt < $ne <> !=
$gte >= $lte <= $gt >
=========================================================================
$all $in
{ a: [ 1, 2, 3 ] }
db.coll.find( { a: { $all: [ 2, 3 ] } } ); 符合
db.coll.find( { a: { $all: [ 3, 4 ] } } ); 不符合
db.coll.find( { a: { $in : [ 3, 4 ] } } ); 符合
=======================================================================================
$exists
db.coll.find( { a : { $exists : true } } ); // return object if a is present,,, 如果a字段存在就返回
db.coll.find( { a : { $exists : false } } ); // return if a is missing 如果a字段不存在就返回该条query
=================================================================================================
$mod
db.coll.find( { a : { $mod : [ 10 , 1 ] } } ); // select * from coll where a%10 == 1 ;
======================================================================================
$in $nin
======================================
$or $nor or只要有一个符合就行 nor后面的只要有一个就不符合
db.foo.find( { $or : [ { a : 1 } , { b : 2 } ] } )
db.foo.find( { name : "bob" , $or : [ { a : 1 } , { b : 2 } ] } )
========================================================================================
$and
db.foo.insert( { a: [ 1, 10 ] } )
db.foo.find( { $and: [ { a: 1 }, { a: { $gt: 5 } } ] } )
===================================================================
$size
db.things.find( { a : { $size: 1 } } ); a集合长度为1的项
=======================================================================
$type
db.things.find( { a : { $type : 2 } } ); // matches if a is a string
db.things.find( { a : { $type : 16 } } ); // matches if a is an int
Type Name | Type Number |
---|---|
Double | 1 |
String | 2 |
Object | 3 |
Array | 4 |
Binary data | 5 |
Object id | 7 |
Boolean | 8 |
Date | 9 |
Null | 10 |
Regular expression | 11 |
JavaScript code | 13 |
Symbol | 14 |
JavaScript code with scope | 15 |
32-bit integer | 16 |
Timestamp | 17 |
64-bit integer | 18 |
Min key | 255 |
Max key | 127 |
=================================================================================
Regular Expressions 正则匹配
db.customers.find( { name : /acme.*corp/i } );
db.customers.find( { name : { $regex : 'acme.*corp', $options: 'i' } } );
db.customers.find( { name : { $regex : /acme.*corp/i, $nin : ['acmeblahcorp'] } } );
========================================================================================================
$elemMatch
t.find( { x : { $elemMatch : { a : 1, b : { $gt : 1 } } } } )
{ "_id" : ObjectId("4b5783300334000000000aa9"), "x" : [ { "a" : 1, "b" : 3 }, 7, { "b" : 99 }, { "a" : 11 } ] }
==========================================
$not
db.customers.find( { name : { $not : /acme.*corp/i } } );
db.things.find( { a : { $not : { $mod : [ 10 , 1 ] } } } );
db.things.find( { a : { $not : true } } ); // syntax error
=========================================================
$where
db.myCollection.find ( { registered : true , $where : "this.a>3" } )
=============================================================
sql 语句 和 mongo 语句 对比 http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart
如果只需要query出其中的一两个field,而不是整个 BSON 查询出来 。
SELECT a,b FROM users
db.users.find({}, {a:1,b:1})
SELECT a,b FROM users WHERE age=33
db.users.find({age:33}, {a:1,b:1})
SELECT * FROM users WHERE name LIKE "%Joe%"
db.users.find({name:/Joe/})
SELECT * FROM users WHERE name LIKE "Joe%"
db.users.find({name:/^Joe/})
SELECT * FROM users WHERE a=1 or b=2
db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } )