我可以在以下集合中使用查询来获取底部的结果吗?
例子:
{
"_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"
},
一组没有相同名称的文档。保留哪些 _id 并不重要。
最佳答案
您可以使用聚合框架来获取此形状,查询可能如下所示:
db.collection.aggregate(
[
{
$group:
{
_id: "$name",
id: { $first: "$_id" }
}
},
{
$project:{
_id:"$id",
name:"$_id"
}
}
]
)
只要您不需要其他字段,这就足够了。
如果您需要添加其他字段 - 请更新文档结构和预期结果。
由于您不关心 id,因此可以简化
db.collection.aggregate([{$group:{_id: "$name"}}])
关于mongodb - 在mongodb中结合不同的投影,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37594169/