MongoDB 高级查询aggregate,时间差

MongoDB 高级查询之时间差(一)

  • MongoDB
    • (一)、简单查询
    • (二)、复杂查询
    • (三)、复杂查询排序

MongoDB

MongoDB,NoSql查询不同于关系型数据查询,聚合函数的高级查询需要用到aggregate

(一)、简单查询

agencyNoticeMessageHistory 为集合

  1. 集合查询
db.agencyNoticeMessageHistory.find();
  1. 集合总数查询
db.agencyNoticeMessageHistory.find().count();

(二)、复杂查询

场景1:集合中有开始时间createTime 和 结束时间updateTime 统计开始时间到结束时间的时间长。

db.agencyNoticeMessageHistory.aggregate([{
    $project: {
        timesub: {
            $subtract: ["$updateTime", "$createTime"]
        }
    }
}]);

在此结果上取出用时最长的数据$max,最短的数据$min,总的时间长$sum

db.agencyNoticeMessageHistory.aggregate([{
    $project: {
        timesub: {
            $subtract: ["$updateTime", "$createTime"]
        }
    }
}, {
    $group: {
				"_id":"$id",
        "maxcount": {
            $min: "$timesub"
        }
    }
}]);

(三)、复杂查询排序

db.agencyNoticeMessageHistory.aggregate([{
    $project: {
        timesub: {
            $subtract: ["$updateTime", "$createTime"]
        }
    }
}, {
    $group: {
				"_id":"$id",
        "maxcount": {
            $min: "$timesub"
        }
    }
}, {
    $sort: {
		timesub:-1
    }
}]);

未完待续。。。

你可能感兴趣的:(数据库,MongoDB,aggregate)