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:
查询分数小于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”}}}])