产品列表附加到程序中。 有多个程序具有相同的产品列表和相同的名称。 我需要的是聚合数据以获得具有相关程序数组的不同程序的列表。
我做的是:
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”]]}
答案 0 :(得分:0)
要获取product.asin
值的明确列表,您需要在对文档进行分组之前$unwind
products
数组:
db.test.aggregate( [
{ $unwind: '$products' },
{ $group: {
_id: "$name",
count: {$sum: 1} ,
products : { $addToSet : "$products.asin" }}
}])