我正在尝试合并一个名为' reviews'的集合中的数据。进入另一个名为“产品”的系列,然而,我希望合并所有评论'对于给定的产品,对于产品中的给定产品'集合作为一个称为评论的数组。例如,下面是一个项目对象,后跟一个评论对象:
特定产品 -
对上述产品的一些评论 -
到目前为止,我已尝试使用以下代码汇总信息,但我没有任何喜悦,任何人都可以建议Mongo新手做什么:
db.getCollection('reviews').aggregate( [
{ $match: {db_asin: "3866811659"}},
{ $group: {_id: null, reviews : { $push: "$$ROOT" }}},
{ $out : "products.db_asin.3866811659" }
] )
答案 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循环结束时添加了右括号