Mongodb:搜索在两个字段之间具有一对多映射的条目

时间:2015-12-08 14:50:28

标签: mongodb

我有一个mongodb数据库,包含ECommerceProducts的实体。有两个字段,“productId”和“skuId”。事情是许多记录是重复的,即两个条目可能具有相同的“productId”以及相同的“skuId”。

我想找到一组具有多个(不同)skuId的productIds。

这就是我现在所拥有的:

db.urls.aggregate([
  { $group: {
    _id: { productId: "$productId" },
    count: { $sum: 1 } 
  } }, 
  { $match: { 
    count: { $gte: 2 } 
  } },
  { $sort : { count : -1} },
  { $limit : 10 }
]);

此代码为我提供了Duplicate productId的列表以及它们发生的次数。我怎样才能获得这些包含的不同skuId的列表?

1 个答案:

答案 0 :(得分:1)

您可以使用$addToSet累加器

db.urls.aggregate([
  { $group: {
    _id: { productId: "$productId" },
    skuId: {$addToSet: "$skuId"},
    count: { $sum: 1 } 
  } }, 
  { $match: { 
    count: { $gte: 2 } 
  } },
  { $sort : { count : -1} },
  { $limit : 10 }
]);

这将返回多次出现的所有产品ID,其中包含一组不同的skuId。