首页 > 解决方案 > 有没有办法使用聚合来获取多个条件下的数据

问题描述

我正在尝试使用聚合获取用户的请求用户数据。我得到了多个查询的数据,但现在我想做聚合。这可以获取数据吗?谁能帮我?

这是数据库结构:

{
    "userId": ObjectId("5c5d8a0da8625b038ef016e7"),
    "email": "kishore.bezawada@merritos.com",
    "firstName": "Kishore",
    "lastName": "Bezawada",
    "phoneNumber": "87678356",
    "summary": "",
    "street": "",
    "city": "",
    "state": "",
    "country": "",
    "pinCode": "",
    "requestIds": [
      ObjectId("5c5eaecc3a82593d2d9b7544"), 
      ObjectId("5c5ec25ef3c4aa40de6c9e9b"), 
      ObjectId("5c5e592cc027fa0c8bb9da05"), 
      ObjectId("5c64111a3a4ed22084b2ed6b"), 
      ObjectId("5c5d8a14a8625b038ef016e9"), 
      ObjectId("5c6409e8e9b8ea69f96ceaf3")
    ]
}

我完成了以下操作:

db.profile.find({userId: ObjectId("5c5d8a0da8625b038ef016e7") }, {}).toArray(function(err, info){ db.profile.find({userId: {$in: info[0].requestIds}}, {}).toArray(function(err, resp){console.log(resp)
});
});

现在如何将其修改为聚合?

标签: mongodbaggregate

解决方案


根据您的问题中的查询,这是您的解决方案:

db.profile.aggregate([
  { $match: { userId: ObjectId("5c5d8a0da8625b038ef016e7") } },
  { $lookup: { 
    from: 'profile',
    localField: 'requestIds',
    foreignField: 'userId',
    as: 'requests' } 
  }
]);

推荐阅读