我是否可以在以下集合中使用查询以在底部获得结果?
示例:
{
"_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并不重要。
答案 0 :(得分:2)
您可以使用聚合框架来获得此形状,查询可能如下所示:
db.collection.aggregate(
[
{
$group:
{
_id: "$name",
id: { $first: "$_id" }
}
},
{
$project:{
_id:"$id",
name:"$_id"
}
}
]
)
只要您不需要其他字段,这就足够了。 如果您需要添加其他字段 - 请更新文档结构和预期结果。
因为你不关心id它可以简化
db.collection.aggregate([{$group:{_id: "$name"}}])