1、条件操作符(<,<=,=,!=,>=,>)
db.getCollection('集合名').find({ "age" : { $gt: 22 } } ); // 大于: 字段> 22
db.getCollection('集合名').find({ "age" : { $lt: 22 } } ); // 小于: 字段 < 22
db.getCollection('集合名').find({ "age" : { $ne: 22 } } ); // 等于: 字段 = 22
db.getCollection('集合名').find({ "age" : { $eq: 22 } } ); // 不等于:字段 != 22
db.getCollection('集合名').find({ "age" : { $gte: 22 } } ); // 大于等于: 字段 >= 22
db.getCollection('集合名').find({ "age" : { $lte: 22 } } ); // 小于等于: 字段 <= 22
2、 逻辑运算符and和or
查询年龄大于18,并且性别是1,相当与and
db.集合名.find({age:{$gte:18},gender:1})
or的用法,或者年龄是20大于等于,或者工资大于5000,或者是HR
db.mycollection1.find( {
$or: [
{ age: {$gte: 20} },
{ salary: {$gt: 5000} },
{ job: "HR" }
]
} )
3、范围查找($in,$nin,$all)相当于sql的in和notIn
db.getCollection('user').find({ "age" : { $in: [22,25] } } ); //age是22或25
db.getCollection('user').find({ "age" : { $nin: [22,25] } } ); //age不是22和25的db.getCollection('user').find({ "age" : { $all: [22] } } ); //年龄符合22岁的所有用户
4、判断字段是否存在($exists)
查询所有存在 age 字段的记录
db.getCollection('user').find({ "age" : { $exists: true } } );
查询所有不存在 age2 字段的记录
db.getCollection('user').find({ "age2" : { $exists: false } } );
5、null查询
db.getCollection('user').find({ "age" : null})
mongoDB本身对于不存在 age 字段的值默认是null。
6、取模运算( $mod)
db.getCollection('user').find({ age: { $mod : [ 10 , 5 ] }})
表示除以10,余数是5的,age点段都会被查出来
7、 查询记录条数(count)
db.mycollection1.find().count() db.mycollection1.count( {查询条件} )
8、limit和skip
# 限定显示条数 db.mycollection1.find().limit(数量) # 跳过指定第几条数据 db.mycollection1.find().skip(2) # 混合使用 db.mycollection1.find().limit(10).skip(3)
9、自定义函数查询
$where: function(){...}
列如:查询返回年龄大于等于18的用户
db.mycollection1.find( { $where: function() { return this.age >= 18; } } )
10、排序sort
sort用于排序,-1表示降序,1表示升序,也可以多个字段排序
db.getCollection('user').find({}).sort({age:-1})
11、投影:查询条件中只查询选择的字段
参数为字段与值,值为1表示显示,值为0不显示
db.stu.find({查询条件},{_id:0,name:1,gender:1})
12、去重distinct()函数
# 格式为: db.集合名.distinct( "指定字段", {查询条件} ) # 如 db.mycollection1.distinct( "job", { age: {$lt: 40} } )
13、正则表达
有两种方法:
/表达式内容/
{$regex: "表达式内容"}
db.mycollection1.find( { name: /^Ja\w+$/ } ) # 或 db.mycollection1.find( { name: { $regex: "/^Jaso\w?$" } } )
Aggregation是MongoDB特有的一种Pipline管道型、聚合查询方式。后记