获取一个字段的最大值,但仅针对另一个字段中具有相同值的其他文档

艾蜜丝·艾莫特(Amelse Etomer)

我有像这样的mongodb文件:

{'device':'A','value':12}
{'device':'A','value':13}
{'device':'A','value':14}
{'device':'B','value':4}
{'device':'B','value':5}

我想找到

{'device':'A','value':14}
{'device':'B','value':5}

即对于每个device(这里AB)最高的文件value

到目前为止,我要做的是在一个查询中找到所有不同的设备,然后获取每个设备的所有文档,每个文档的排序降序为1,但降序为1。但这需要大量查询。

有没有办法在一个查询中做到这一点?

阿什

您需要将$group聚合运算符与$max累加器一起使用

db.collection.aggregate([
  { "$group": {
    "_id": "$device",
    "value": {
      "$max": "$value"
    }
  }},
  { "$project": { "_id": 0, "value": 1, "device": "$_id" }}
])

蒙哥运动场

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

日期字段的最大值到Postgresql中的另一个字段

按另一个字段的最大值进行汇总

SELECT 在两个字段中具有相同值的行,在另一个字段中具有不同的值

需要一个 Elasticsearch 查询,将结果限制为在一个字段中具有相同值但在另一个字段中具有不同值的那些

具有一个字段的最新值并保留其他字段的MongoDB查询文档

在DRF的字段级别验证中获取另一个字段的值

按返回正确的名称分组,以获得另一个字段中的最大值

如何计算具有相同值的文档数,并使用mongoDB中的另一个字段将它们分组?

根据另一个字段的值在MongoDB中投影一个字段

检查一个字段的值是否在另一个字段中

如何查找一个字段的值与另一个字段的值匹配的所有文档

如何查询在另一个字段中与该行的值共享相同值的所有值?

MYSQL连接两个具有相同字段值的表字段,但如果另一个字段与另一个字段不匹配,则仍将包括

Rails会验证一个字段值,除非另一个字段具有值

确保对象字段在Json Schema的另一个字段中具有值

提取在两个或多个字段中具有重复值但在另一个字段中具有不同值的行

查找来自一个字段的值不为null且不在另一个字段中的MongoDB文档

如果我知道第一个字段值,如何从模型中获取另一个字段值?

通过另一个字段中的 1 索引值获取数组项

数组中的php foreach获取另一个字段的值

在 MongoDB 中,有一个对象列表,通过查询同一对象的另一个字段的值,根据对象的一个字段的值对所有文档进行排序

通过自联接计数,其中一个字段为空但另一个字段具有值

Matlab结构-在一个字段中仅复制具有特定值的元素

在Access VBA中从具有唯一编号的另一个字段值创建串联代码

如何左连接并按条件最大值选择,然后选择另一个字段?

为csv文件中的另一个字段标识具有特殊字符的值

如何为一个对象列表的一个字段与另一个具有公共字段的对象的列表的字段设置值?

Laravel更新字段,带有另一个字段值

当另一个字段值更改时更新一个字段值