Mongo聚合查询以获得常见结果

时间:2020-05-27 18:37:09

标签: mongodb

我有以下文件的MongoDB集合:

db.inventory.insertMany([
   { "_id" : 1,"uid":"b123","name" : "test","lang" : "ja-jp"},
   { "_id" : 2,"uid":"b123","name" : "test","lang" : "en-us"},
   { "_id" : 3,"uid":"b123","name" : "demo","lang" : "ja-jp"},
   { "_id" : 4,"uid":"b123","name" : "demo","lang" : "en-us"},
   { "_id" : 5,"uid":"b456","name" : "test","lang" : "en-us"},
   { "_id" : 6,"uid":"b456","name" : "demo","lang" : "en-us"}
])

并希望得到以下答复

[{uid:"b123"}]

如何使用Mongo聚合查询获得结果?还是有其他选择?

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解这个问题,但是您可以执行以下几项操作来返回uid字段:

  1. 使用查找和项目:
db.inventory.find({
  uid: 'b123'
}).project({
  uid: $uid
});

这将产生{uid: 'b123'}的列表。 如果只需要唯一的结果,则可以将$group与aggregate一起使用,如下所示:

db.inventory.aggregate([
  {
    $match: {
      uid: 'b123'
    }
  },
  {
    $group: {
      _id: {
        uid: '$uid'
      }
    }
  },
  {
    $group: {
      _id: 1,
      result: {
        $addToSet: '$_id'
      }
    }
  }
]);

请注意,第二个$group的目的是将它们全部收集在一个数组下。
响应将是这样的:

{
  _id: 1,
  result: [
    {uid: 'b123'}
  ]
}

希望可以回答您的问题