我的收藏看起来像这样:
{
{
_id: 'some value',
'product/productId': 'some value',
'product/title': 'some value',
'product/price': 'unknown'
},
{
_id: 'some value',
'product/productId': 'some value',
'product/title': 'some value',
'product/price': '12.57'
}
}
我的目标是查找是否有任何产品具有多个价格。关键字“product/price”的值可以是“unknown”或数字(例如“12.75”)。是否有方法为此编写聚合管道,或者是否需要使用map-reduce算法?我尝试了两种方法,但没有找到解决方案。
1条答案
按热度按时间tvokkenx1#
如果我没理解错的话,您可以尝试以下聚合管道:
首先,
_id
字段是(或者应该是)唯一的,所以我认为您指的是另一个类似id
的字段。因此,诀窍是按
id
分组,将所有价格放入一个数组中,然后使用$match
过滤,只获取价格总和大于1的文档。示例here
添加到Joe的注解中,如果要将相同值视为相同值,则必须使用$addToSet
示例here