MongoDB分组和最大项目?

克里斯·劳顿

为了我的一生,我不知道如何在MongoDB中编写此查询!

我需要从查询中返回行,其中最大“修订”是为某项返回的行

我分为两个部分:

  1. 在没有实际获取数据的情况下返回计数。
  2. 根据分组返回所有数据(不一定按A列顺序,但会有所帮助)。

这是一个示例集(在我们的实际数据中,我们有约40列和可能的数百万行):

    ABCD修订
    -------- + ------- + ------- + ------- + ------------ 
    Item1 100200 300 1
    项目1 111 222 333 2
    项目2 200 500 800 1
    项目2 222 555 888 2
    项目2 223 556 889 3
    项目3 300 600 900 1
    项目4 400 700 1000 1

我需要退货的内容:

  1. 返回的计数:4
  2. 返回的数据:
    ABCD修订
    -------- + ------- + ------- + ------- + -------- 
    Item1 111222333 2 
    Item2223 
    556889 3
    项目3300600900 1项目44007001000 1
    

我一直在尝试许多组合或$group$count甚至尝试使用SQL到MongoDB查询翻译工具,但似乎无法使其工作。

请帮助,并提前感谢!

谁-假面真灵魂

请尝试以下查询:

db.collection.aggregate([
  {
    $group: {
      _id: "$A",
      A: { $first: "$A" },
      B: { $max: "$B" },
      C: { $max: "$C" },
      D: { $max: "$D" },
      Revision: { $max: "$Revision" },
    }
  },
  {
    $project: { _id: 0 },
  },
  {
    $group: {
      _id: "",
      count: { $sum: 1 },
      data: { $push: "$$ROOT" }
    }
  }
]);

测试: mongoplayground

因此,在该data字段中,您将拥有实际的文档,其中的数量代表集合中唯一ID的数量'A'

如果您不希望结果以这种方式出现,则可以尝试以下查询:

db.collection.aggregate([
  {
    $group: {
      _id: "$A",
      A: { $first: "$A" },
      B: { $max: "$B" },
      C: { $max: "$C" },
      D: { $max: "$D" },
      Revision: { $max: "$Revision" },
    }
  },
  {
    $project: { _id: 0 },
  }
])

测试: mongoplayground

它会返回一个对象数组,因为聚合将始终返回一个游标,该游标将被解析为代码中的数组,然后您可以.length对数组执行操作以获取总计数,而不是$group在第一查询中使用第二阶段仅获得总计数另一个选择。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从脚本更改ReorderableList最大项目

来自分类Dev

从脚本更改ReorderableList最大项目

来自分类Dev

在列表中查找最大项目

来自分类Dev

来自熊猫的最大项目匹配

来自分类Dev

选择最大项目数,获得排名和百分位数

来自分类Dev

Android导航抽屉的最大项目数

来自分类Dev

设置意图返回的最大项目数

来自分类Dev

在MSSQL中选择每年的最大项目

来自分类Dev

阵列多选laravel刀片模板中的最大项目

来自分类Dev

PHP assoc数组,获取最大项目数

来自分类Dev

列表中最大项目的出现次数

来自分类Dev

PHP:循环 - 如何添加最大项目

来自分类Dev

如何显示git历史上最大的10个最大项目

来自分类Dev

如何显示git历史上最大的10个最大项目

来自分类Dev

J2ME列表中的最大项目数

来自分类Dev

如何在引导卡中设置最大项目数?

来自分类Dev

如何在SQLite中使用触发器为特定表设置最大项目?

来自分类Dev

GCS Objects#list请求中返回的最大项目数

来自分类Dev

Google Developers:您已超出可以创建的最大项目数

来自分类Dev

如何根据字段设置要存储的最大项目数?

来自分类Dev

根据固定的给定值计算允许的最大项目数

来自分类Dev

OpenGL大项目,VAO-s等

来自分类Dev

像hadoop这样的大项目

来自分类Dev

PHP中较大项目的对象和类结构

来自分类Dev

使用SignalR和KnockoutJS进行较大项目的Javascript

来自分类Dev

PHP中较大项目的对象和类结构

来自分类Dev

如何使用Swift 5查找结构数组项目之一的最小或最大项目索引

来自分类Dev

PHP MySQL并发性,数据库中的最大项目数有限

来自分类Dev

PHP MySQL并发性,数据库中的最大项目数有限

Related 相关文章

热门标签

归档