在MongoDB中的一组列表中获取较小的数字

时间:2014-08-09 22:54:35

标签: python mongodb mongodb-query aggregation-framework database

我在mongoDB中存储了一些数据,我存储的其中一个值存储在列表中:

{ "_id" : ObjectId("53e69fa04250631b68443a6d"), "uts" : [ 1407623152, 1407623477 ] }
{ "_id" : ObjectId("53e69f684250631b3d9645af"), "uts" : [ 1407622961 ] }
...

如何在所有列表之间获得较小的uts数字?

1 个答案:

答案 0 :(得分:1)

这是.aggregate()方法的用途,因为您正在有效地操作返回的数据:

db.collection.aggregate([
    { "$unwind": "$uts" },
    { "$group": {
        "_id": None,
        "uts": { "$min": "$uts" }
    }}
])

从集合中的所有文档中返回最小值。或者只获取每个文档的最小值,为分组键提供原始_id值:

db.collection.aggregate([
    { "$unwind": "$uts" },
    { "$group": {
        "_id": "$_id",
        "uts": { "$min": "$uts" }
    }}
])

$unwind运算符"反规范化"数组内容,以便每个条目有效地成为具有所有其他值的新文档。 $group运算符也完全按照所说的和"组"给定密钥的文档。这里$min运算符用于" uts"字段以找到最小值。

官方文档中的SQL to Aggregation Mapping文档是介绍概念的好地方。