mongo中的查询表达式都需要用对象表示
1. 最简单的查询表达式
{field: value},是指查询field列的值为value的文档
2. $ne -- != 查询表达式
{field : { $ne : value }} , 查field列的值不等于 value的文档
db.goods.find({cat_id : {$ne : 3}}, {goods_id : 1, car_id : 1, goods_name : 1, _id : 0} ) _id: 0 表示不查询_Id 列
3. $gt -- > 查询表达式
db.goods.find({shop_price : { $gt : 3000} }, {goods_id:1, shop_price : 1, _id : 0 })
$gt -- > , $gte -- >=, $in -- in, $lt -- < , $lte -- <=, $ne -- !=, $nin -- not in
4. $and, $nin, $nor
db.goods.find({ $and : [{ cat_id : {$ne : 3}}, {cat_id : {$ne : 11}}] }, {cat_Id : 1, goods_name : 1, _id : 0 });
db.goods.find({ cat_id : {$nin : [3, 11]}}, {cat_id : 1, goods_name : 1, _id : 0});
db.goods.find({ $nor : [ {cat_Id: 3}, {cat_Id : 11}]}, {cat_Id : 1, goods_name : 1, _Id : 0});
5. $mod
db.goods.find({ good_id : { $mod : [5, 0 ]} }, {good_id : 1, good_name : 1, _id : 0}); --查询 good_Id 对5求模后等于0的记录
6. $exists
db.stu.find({ age : {$exists : 1}}); -- 查询有age 列的数据
7. $type
db.stu.find({ age : {$type : 1}}); --查询 age 值为数字的数据
8. $all
db.stu.inert({name : 'lily', hobby : ['a', 'b', 'c']})
db.stu.insert({name: 'lucy', bobby : ['b','c','e']})
db.stu.find({ hobby : { $all : ['b', 'c', 'z' ]}}) --查询 子文档 hobby中包含有 b,c,z的数据
9. $where
db.goods.find({ $where : 'this.shop_price > 5000'}, {shop_price : 1, goods_name : 1, _id : 0}}
$where 会将二进制数据转换成js引擎能识别的json,效率上低
10. $regex
db.goods.find({ good_name : { $regex : /^诺基亚.*/} })
来源:oschina
链接:https://my.oschina.net/u/4418449/blog/4254717