mongodb - 将集合聚合并插入到mongodb中的不同集合中

标签 mongodb mongodb-query aggregation-framework aggregate

我正在尝试将名为 reviews 的集合中的数据合并到另一个名为 products 的集合中。我想将给定 product 的所有 reviews 合并到 products 集合中的 product 作为一个名为评论

例如,这是一个产品对象,后跟一个评论对象:

特定产品 -

A specific product

对上述产品的一些评论-

A few reviews for the above 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/

相关文章:

javascript - 如何在 Node JS 回调中获取 MongoDB collection.aggregate() 的结果?

javascript - Axios POST 到服务器返回空字符串

java - 在 MongoDB Java 驱动程序中创建查询

mongodb - 填充 $lookup 中的特定字段

mongodb - 查找数组中最大值与查询匹配的所有 Mongo 文档

java - Spring Data MongoDB - 聚合方法

javascript - 来自外国集合的项目特定字段 $lookup 结果

javascript - MongoDB - 在一系列小时而不是日期之间查询

每日分组内的 MongoDB 聚合

python - pymongo.errors.CursorNotFound : cursor id '…' not found at server