MongoDB:将一个集合聚合到给定文档的另一个集合中

时间:2018-03-22 11:24:38

标签: mongodb mongodb-query aggregation-framework aggregate

我正在尝试合并一个名为' reviews'的集合中的数据。进入另一个名为“产品”的系列,然而,我希望合并所有评论'对于给定的产品,对于产品中的给定产品'集合作为一个称为评论的数组。例如,下面是一个项目对象,后跟一个评论对象:

特定产品 -

A specific product

对上述产品的一些评论 -

A few reviews for the above product

到目前为止,我已尝试使用以下代码汇总信息,但我没有任何喜悦,任何人都可以建议Mongo新手做什么:

db.getCollection('reviews').aggregate( [
                  { $match: {db_asin: "3866811659"}},
                  { $group: {_id: null, reviews : { $push:  "$$ROOT" }}},
                  { $out : "products.db_asin.3866811659" }
              ] )

1 个答案:

答案 0 :(得分:1)

将聚合更改为产品集合,并使用$lookup从db_asin上的其他集合中提取评论。

这样的东西
db.products.aggregate([
  {"$match": {"db_asin": "3866811659"}},
  {"$lookup":{
    "from":"reviews",
    "localField":"db_asin",
    "foreignField":"db_asin",
    "as":"reviews"
  }}
]).forEach(function(doc){ 
  var _id = doc._id; 
  var reviews = doc.reviews; 
  db.products.update({"_id" : _id},{"$set": {"reviews" : reviews}})
}); 

编辑:在forEach循环结束时添加了右括号