Mongodb Mongo DB-如何查询依赖于字段数组中最早日期的id

Mongodb Mongo DB-如何查询依赖于字段数组中最早日期的id,mongodb,Mongodb,假设我有一个名为phone\u audit的集合,文档条目的形式如下-\u id是电话号码,value包含始终包含两个条目(id和日期)的项 请参阅下文: { "_id" : { "phone_number" : "+012345678" }, "value" : { "items" : [ { "_id" : "c14b4ac1

假设我有一个名为
phone\u audit
的集合,文档条目的形式如下-
\u id
是电话号码,
value
包含始终包含两个条目(id和日期)的项

请参阅下文:

{
        "_id" : {
            "phone_number" : "+012345678"
        },
        "value" : {
            "items" : [
                {
                    "_id" : "c14b4ac1db691680a3fb65320fba7261",
                    "updated_at" : ISODate("2016-03-14T12:35:06.533Z")
                },
                {
                    "_id" : "986b58e55f8606270f8a43cd7f32392b",
                    "updated_at" : ISODate("2016-07-23T11:17:53.552Z")
                }
            ]
        }
},
......
我需要为该集合中的每个条目获取一个
\u id
值列表,这些条目表示每个文档中两个项目中较早的一个

因此,在上述情况下,结果将是
[c14b4ac1db691680a3fb65320fba7261,…]

即使确切的语法不正确,在要执行的查询类型上的任何指针都是有帮助的

使用aggregate(),您可以通过更新$diswindvalue.items,$sort,然后使用$first获取最旧的:

[
{
    "$unwind": "$value.items"
},
{ 
    "$sort": { "value.items.updated_at": 1 } 
},
{
    "$group":{
        _id: "$_id.phone_number",
        oldest:{$first:"$value.items"}
    }
},
{
    "$project":{
        value_id: "$oldest._id"
    }
}
]

这看起来令人鼓舞,但不幸的是,这并不奏效。结果包含最古老和最新的混合。它似乎只接受value.items的第一个条目,就好像它从未首先排序过一样。请参阅修订版。对于$sort,我错误地使用了“value.updated_at”而不是“value.items.updated_at”