在mongodb中结合不同的投影

时间:2016-06-02 14:03:45

标签: 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"
},

一组没有相同名称的文件。保留哪些_ids并不重要。

1 个答案:

答案 0 :(得分:2)

您可以使用聚合框架来获得此形状,查询可能如下所示:

db.collection.aggregate(
   [     
     {
       $group:
         {
           _id: "$name",
           id: { $first: "$_id" }
         }
     },
     {
      $project:{
          _id:"$id",
          name:"$_id"
          }
      }   
   ]
)

只要您不需要其他字段,这就足够了。 如果您需要添加其他字段 - 请更新文档结构和预期结果。

因为你不关心id它可以简化

db.collection.aggregate([{$group:{_id: "$name"}}])