文档网址
https://docs.mongodb.com/manual/indexes/index.html
登录
./mongo ip:port
use admin
db.auth(“admin”,“12345”)
use humanDataBase
db.human.find()
按条件查询
db.human.find({"born_time":{"$gte":ISODate("2000-07-01T00:00:00Z"),"$lte": ISODate("2019-10-09T08:38:38Z")},"gender":1} ).count()
解释:
查询出生日期大于2000-07-01T00:00:00Z的男孩的人数
查询某个字段最小(最大)的记录
常用于查找数据中时间字段
db.human.find({},{born_time:1}).sort({born_time:1}).limit(10)
解释:
find({},{born_time:1}):在human集合不进行条件过滤,只返回born_time字段(0为排除该字段)
sort({born_time:1}):born_time字段升序排序(-1为降序)
limit(10):返回条数为10
对某个字段分组
db.human.aggregate([{"$group":{"_id":"$age",“count”:{"$sum":1}}}])
解释:
对human集合按照年龄进行分组,得到每个年龄的人数
根据时间字段分组
db.human.aggregate([{"$group":{"_id":{“year”:{"$year":"$born_time"},“month”:{"$month":"$born_time"},“day”:{"$dayOfMonth":"$born_time"}},“count”:{"$sum":1}}}])
解释:
对human集合按照出生日期进行聚合分组,得到每天出生的人数
$dayOfMonth:以1到31之间的数字返回日期的日;
$month:以1到12之间的数字返回日期的月份;
$year:返回日期的年份;
注:
有时聚合操作可能会报错
原因是聚合的结果必须要限制在16M以内操作,(mongodb支持的最大影响信息的大小),否则必须放在磁盘中做缓存 (allowDiskUse=True)。
mongos> db.getCollection('xxx').aggregate([{$group:{_id:{"id":"$xx","name":"$yy"},count:{$sum:1}}},{$match:{count:{$gt:1}}}],{ allowDiskUse: true })