首页 > 解决方案 > 如何在一个产品中获取多个相关产品

问题描述

我需要写一个查询,来计算相关产品的数量。我已经尝试过了,但没有奏效:

db.collection.aggregate([
  {
    $match: {
      title: "bike"
    }
  },
  {
    $group: {
      _id: {
        related: "$related",
        inside: "$inside"
      },
      related: {
        $sum: "$inside"
      }
    }
  }
])

我需要得到里面的项目数量,表格看起来像这样

{
   "title" : "bike",
   "related" : {
       "inside" : [ 
           "item1", 
           "item2", 
           "item3",         
       ]
   }
}

任何想法如何在“自行车”->“内部”中获得这么多物品?

标签: databasemongodbnosqlaggregation-framework

解决方案


基本上,您要查找的运算符是$size。您可以使用$addFields将该值添加到每个文档:

db.collection.aggregate([
    {
        $match: { title: "Watch" }
    },
    {
        $project: {
            size: { $size: "$related.viewed" }
        }
    }
])

蒙戈游乐场


推荐阅读