MongoDB学习笔记--查询,排序,统计

基础文档为名为food的集合,key包含score(分数)、version(版本)、date(日期)、device(设备型号)等。

1.按照键值对value内容查询:查询分数为1.0的文档

db.food.find({‘score’:1.0})

多个键值对内容查询:查询分数与版本

db.food.find({‘score’:1.0,‘version’:‘1.0.136’})

查询value开头内容:查询开头是2019-05-06的文档

db.food.find({ ‘date’: /^2019-05-06/ } )

2.查询score为1.0或5.0的文档,同一key下多个value的查询

db.food.find({‘score’:{ $in: [ 1.0, 5.0 ] }})

大于、小于、等于的查询,摘自https://www.runoob.com/mongodb/mongodb-query.html:

MongoDB学习笔记--查询,排序,统计
查询分数小于4大于1:(大于小于的顺序不能颠倒)

db.food.find({ ‘score’: { $ gt:1,$lt:4}})

3.$or:查询条件的或:分数为1.0或版本为1.0.120

db.food.find({$or: [ { ‘score’: 1.0 }, { ‘version’: ‘1.0.120’ } ]})

4.and与或共用:查询score大于1小于4并且version为1.0.136或者日期开头为2019-05-06的文档

db.food.find({ ‘score’: {$ gt:1,$ lt:4},$or:[ { ‘version’: ‘1.0.136’ }, { ‘date’: /^2019-05-06/ } ]})

5.排序sort:根据分数排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

db.food.find({}).sort({“score”:-1})

6.按照机型,统计同一个device的使用数量:

db.food.aggregate([{$ group : {_id : “$ device”, num_tutorial : {$ sum : 1}}}])

统计同一个device的总评分:

db.food.aggregate([{$ group : {_id : “$ device”, num_tutorial : {$sum : 1}}}])

7.按照机型,统计同一个device的平均得分:

db.food.aggregate([{$ group : {_id : “$ device”, num_tutorial : {$ avg : “$score”}}}])

按照版本平均评分:

db.food.aggregate([{$ group : {_id : “$ version”, num_tutorial : {$ avg : “$score”}}}])

MongoDB学习笔记--查询,排序,统计