在mongodb中结合不同的投影

在mongodb中结合不同的投影

我可以在以下集合中使用查询来获取底部的结果吗?

例子:

{
    "_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/

10-09 23:33