【发布时间】:2016-05-11 15:02:50
【问题描述】:
我的集合“人”中有以下数据:
{"name" : "Anton", "age" : 22, "city" : "New York"}
{"name" : "Anton", "age" : 21, "city" : "London"}
{"name" : "Anton", "age" : 20, "city" : "Berlin"}
{"name" : "Berta", "age" : 20, "city" : "Berlin"}
我希望 Mongo 给我最年轻的人 1 每个名字及其所有属性(整个文档) - 即:
{"name" : "Anton", "age" : 20, "city" : "Berlin"}
{"name" : "Berta", "age" : 20, "city" : "Berlin"}
使用以下查询:
db.people.aggregate( [
{
$group:{
_id:"$name",
"age": {$min:"$age"},
city : { $first: "$city" }
}
}
] );
Mongo 会给我:
{"_id" : "Anton", "age" : 20, "city" : "New York"} // Wrong City
{"_id" : "Berta", "age" : 20, "city" : "Berlin"}
由于我使用“$first”作为城市属性,Mongo 选择“Anton”组中第一人的城市,但选择最年轻的 Anton 的城市。 (我可以接受结果中的“_id”而不是“name”。)
通过谷歌搜索和拖网几个小时的 Mongo 文档,我找不到解决方案。
如果有人可以更正我的查询以达到我的需要,我会很高兴。
【问题讨论】:
-
我在最初的帖子中已经这样做了。 ` {“name”:“Anton”,“age”:20,“city”:“Berlin”} {“name”:“Berta”,“age”:20,“city”:“Berlin”}`忘记了什么?
-
不,抱歉,我错过了。
-
确保在这篇帖子@AndréGräf 上接受答案
-
对不起,我是 SFO 菜鸟... 完成 :)
标签: mongodb