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”