我正在尝试将名为 reviews
的集合中的数据合并到另一个名为 products
的集合中。我想将给定 product
的所有 reviews
合并到 products
集合中的 product 作为一个名为评论。
例如,这是一个产品对象,后跟一个评论对象:
特定产品 -
对上述产品的一些评论-
我尝试使用以下代码聚合数据,但我不知道如何将它们插入到 products
集合中。
db.getCollection('reviews').aggregate( [
{ $match: {db_asin: "3866811659"}},
{ $group: {_id: null, reviews : { $push: "$$ROOT" }}},
{ $out : "products.db_asin.3866811659" }
] )
最佳答案
将聚合更改为产品收集和使用$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 循环末尾添加右括号
关于mongodb - 将集合聚合并插入到mongodb中的不同集合中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49427425/