我可以在下面的集合上使用一个查询来获取底部的结果吗?
示例:
{
"_id" : ObectId(xyz),
"name" : "Carl",
"something":"else"
},
{
"_id" : ObectId(aaa),
"name" : "Lenny",
"something":"else"
},
{
"_id" : ObectId(bbb),
"name" : "Carl",
"something":"other"
}
我需要一个查询来获得这个结果:
{
"_id" : ObectId(xyz),
"name" : "Carl"
},
{
"_id" : ObectId(aaa),
"name" : "Lenny"
},
没有相同名称的一组文档。保留哪些_ids并不重要。
发布于 2016-06-03 00:24:52
您可以使用聚合框架来获得此形状,查询可能如下所示:
db.collection.aggregate(
[
{
$group:
{
_id: "$name",
id: { $first: "$_id" }
}
},
{
$project:{
_id:"$id",
name:"$_id"
}
}
]
)
只要你不需要其他字段,这就足够了。如果您需要添加其他字段-请更新文档结构和预期结果。
由于您不关心ids,因此可以将其简化
db.collection.aggregate([{$group:{_id: "$name"}}])
https://stackoverflow.com/questions/37594169
复制相似问题