mongodb学习总结(二)
一、db.getCollection('test').find({}):显示 test 集合中的所有数据。
二、db.getCollection('test').find({"test1":5}):显示 test 集合中 test1 所有等于 5 的数据。
三、db.getCollection('test').aggregate([{$group:{_id:"$test1",num_tutorial:{$min:"$test2"}}}]):这个语句查询按照以下几步描述:
1、找出 test 集合中 test1 这个字段对应 value 的所有不同的值。(例:test1 对应的有 1,2,3,4,2,1。那么就会有 1,2,3,4 四种不同字段)
2、在每个不同的 test1 的 value 中找出 test2 对应值得最小值。
3、在结果显示中,test1 字段的 key 显示为 _id,test2 字段显示为 num_tutorial。
4、如果在 test 集合中没有找到 test1 字段,则寻找集合中所有数据的 test2 的最小值,结果中 _id 显示为 null,结果只有一条。如果 test2 字段也没有,则结果依旧只有一条,其中 _id 字段和 num_tutorial 字段都显示为 null。如果 test1 有而 test2 没有,则显示所有的 _id 字段,num_toturial 全部为 null。
四、上述所说的是 $min 表达式,与 $min 表达式类似的还有 $max,$avg,$sum;分别表示的是最大值,平均值,总和。
五、将 “三” 的语句中的 $min 改为 $push,显示结果如果 test1 不存在则是 null,如果有,有几种则显示几条数据,而每个 _id 后面跟着的数据是 num_tutorial[相同_id的test2数据1,相同_id的test2数据2,......]。
六、$addToSet 这个表达式我未看出与 $push 有什么不同,num_tutorial 数据的顺序变了,其他的我没看出来。
七、将 $min 改为 $first 或者 $last ,则有几个 _id 字段显示几条数据,每条数据中的 num_tutorial 显示一个是第一条或者是最后一条。
八、db.getCollection('test').aggregate([{$project:{_id:0,deviceeui:0}}]):
1、上面这句话是将集合中每条数据除了 _id 和 deviceeui 两个字段之外,其余的全部显示。
2、如果 deviceeui 为1,则仅仅显示每条数据的 deviceeui 字段。(我试过其他数字,试的不多,除了 0 之外所有数字都是这样。)
3、如果要多显示每条数据中的其他字段,则在 deviceeui 字段后继续增加,但是在这种情况下,deviceeui 字段必须是 1,0 就报错。