您的当前位置:首页正文

MongoDB数据库高级查询

2024-11-09 来源:个人技术集锦

1、比较运算符查询

db.集合名.find({"键名": {比较运算符1:值1, 比较运算符2:值2} })

db.yunfan_test.find({"age": {$lt:24}})

2、in/not in

db.集合名.find({"键名": {$in:[值1, 值2, 值3 ...]} })

db.集合名.find({"键名": {$nin:[值1, 值2, 值3 ...]} })db.yunfan_test.find({"age":{$in:[20,21,22]}})

db.yunfan_test.find({"age":{$in:[20,21,22]}})

3、size

db.集合名.find({"键名": {$size:n} })

db.yunfan_test.find({"list":{$size:3}})

4、exists

db.集合名.find({"键名": {$exist: true|false} })

db.yunfan_test.find({"flag":{$exists:true}})

5、or

db.集合名.find({$or:[{条件1}, {条件2}, {条件3}...]})

db.yunfan_test.find({$or:[{"name":"张三"},{"name":"李四"}]})

6、模糊查询

db.集合名.find({"键名": js正则表达)

db.yunfan_test.find({"name":/张三/})

7、查询结果排序(sort)

db.集合名.find().sort({"键名": 1|-1, "键名": 1|-1...})  #1为升序, -1为降序

db.yunfan_test.find().sort({"age":-1})

8、限定返回结果数量(limit)

db.集合名.find().limit(n)

db.集合名.find().skip(n)  # 跳过n条,返回从n+1k开始的数据

db.集合名.find().skip(n).limit(m)  # 跳过n条,返回后面的m条

db.yunfan_test.find().limit(1).sort({"age":1})

9、查询返回结果数量(count)

db.集合名.find().count()

db.集合名.find().skip(n).count(true)  # 与skip结合使用时,要加true

db.yunfan_test.find().count()

10、聚合函数

db.集合名.aggregate({$group:{_id:'$字段名', 别名:{$聚合函数:'$字段名'}}}

);

例:

# 统计同年龄的人数

db.yunfan_test.aggregate({$group:{_id:'$age',count_age:{$sum:1}}}

);# 统计所有人平均年龄

db.yunfan_test.aggregate({$group:{_id:null,总人数:{$sum:1},avg_age:{$avg:"$age"},min_age:{$min:"$age"},max_age:{$max:"$age"}}}

);

显示全文