Mongodb多维数据聚合/重复数据删除


只怕再见是故人
2024-12-24 11:25:37 (1月前)


我有一个包含的集合

数据
</跨度>
类似于此:

{
DIMENSION1:一,
维度2:B,
DIMENSION3:C,
dimension4:d,
dimension5:E,
价值:x
}

有一定数量的值,a,b,c,d,e可以知道我可以用mapReduce做到这一点,但有没有办法更简单/更快地做到这一点,甚至可以保证我的插入如果存在,语句会添加到现有值吗?

[编辑]

我也看到db.collection.group()似乎是为了做这样的事情,但它无法处理我的大小

数据
</跨度>



2 条回复
  1. 0# 电动少女 | 2019-08-31 10-32



    我想你想要一个

    Upsert with Modifier

    。这将满足您的第二种方法,因此如果不存在匹配的行,则插入一行,或者仅在匹配的行存在时添加该值。



    所以你的例子是这样的:




    1. db.mycollection.update( { dimension1: a, dimension5: e }, { $inc: { value: x } }, true); //the ‘true’ is the param that makes this update an upsert

    2. </code>


    如果要插入所有单个值,然后稍后聚合它们,我建议您将它们聚合到一个单独的集合中(以避免混淆)。可能最简单的方法是使用map / reduce而不是group,因为你可以简单地设置map / reduce的输出选项,将其输出合并到聚合集合中,其选项如下:

    out : {reduce: “aggregatedcollection”}



登录 后才能参与评论