Mongodb Aggregation with collection

时间:2014-04-13 12:20:04

标签: mongodb mongoose aggregation-framework

产品列表附加到程序中。 有多个程序具有相同的产品列表和相同的名称。 我需要的是聚合数据以获得具有相关程序数组的不同程序的列表。

我做的是:

  Program.aggregate( [
   { $group: {
        _id: "$name", count: {$sum: 1} ,  products : { $addToSet : "$products.asin" }}
   }])  

但是通过该查询,我得到了具有相同数据的多个数组:

  

[{   _id:“Météo”,伯爵:681,   产品:[[“ B003I4DS22 ”,“ B00BH56GXM ”,“B006SMNQWI”,“B008QZQRIK”,“B00AC1ZLJC”,“B0064X7FVE”,“B009M4SGUG”,   “B0013K6C6M”,“B002JM0DEK”,“B0009ENA2W”]   ,[“ B003I4DS22 ”,“ B00BH56GXM ”,“B006SMNQWI”,“B008QZQRIK”,“B0064X7FVE”,“B00AC1ZLJC”   ],[“B003I4DS22”,“B00BH56GXM”,“B0064X7FVE”,“B008QZQRIK”,   “B006SMNQWI”,“B00AC1ZLJC”,“B009M4SGUG”,“B0013K6C6M”,“B002JM0DEK”,   “B0009ENA2W”}]

我想要的是:

  

[{   _id:“Météo”,计数:681,产品:[[“B003I4DS22”,“B00BH56GXM”,“B006SMNQWI”,“B008QZQRIK”,“B00AC1ZLJC”,“B0064X7FVE”,“B009M4SGUG”,   “B0013K6C6M”,“B002JM0DEK”,“B0009ENA2W”]]}

1 个答案:

答案 0 :(得分:0)

要获取product.asin值的明确列表,您需要在对文档进行分组之前$unwind products数组:

db.test.aggregate( [
   { $unwind: '$products' },
   { $group: {
        _id: "$name", 
        count: {$sum: 1} ,  
        products : { $addToSet : "$products.asin" }}
   }])