在 MongoDB GROUP BY 中执行 HAVING 的正确方法是什么?

2024-02-12

对于 SQL 中的这个查询(查找重复项):

SELECT userId, name FROM col GROUP BY userId, name HAVING COUNT(*)>1

我在 MongoDB 中执行了这个简单的查询:

res = db.col.group({key:{userId:true,name:true}, 
                     reduce: function(obj,prev) {prev.count++;}, 
                     initial: {count:0}})

我添加了一个简单的 Javascript 循环来遍历结果集,并执行过滤器来查找其中计数 > 1 的所有字段,如下所示:

for (i in res) {if (res[i].count>1) printjson(res[i])};

除了在客户端使用 javascript 代码之外,还有更好的方法吗? 如果这是最好/最简单的方法,请说它是,这个问题将对某人有所帮助:)


使用 Mongo 聚合框架的新答案

在提出并回答这个问题后,10gen 发布了带有聚合框架的 Mongodb 2.2 版本。执行此查询的新最佳方法是:

db.col.aggregate( [
   { $group: { _id: { userId: "$userId", name: "$name" },
               count: { $sum: 1 } } },
   { $match: { count: { $gt: 1 } } },
   { $project: { _id: 0, 
                 userId: "$_id.userId", 
                 name: "$_id.name", 
                 count: 1}}
] )

10gen有一个方便的SQL 到 Mongo 聚合转换表 http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/值得添加书签。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 MongoDB GROUP BY 中执行 HAVING 的正确方法是什么? 的相关文章

随机推荐

  • Rails first_or_create ActiveRecord 方法

    什么是first or create first or create Rails 中的方法 根据文档 http apidock com rails ActiveRecord Relation first or create 方法 没有描述
  • 存储字典值的路径

    如何将值的路径存储在dict of dict是 例如 我们可以轻松地将路径存储到name变量中的值name field person person name Jeff Atwood person address person address
  • 如何使 WPF 组合框具有 XAML 中最宽元素的宽度?

    我知道如何在代码中执行此操作 但是可以在 XAML 中执行此操作吗 窗口1 xaml
  • torch.sum() 中的 dim=-1 或 -2 是什么意思?

    让我以二维矩阵为例 mat torch arange 9 view 3 1 tensor 0 1 2 3 4 5 6 7 8 torch sum mat dim 2 tensor 9 12 15 我发现结果torch sum mat dim
  • 当新项目添加到模型时,ng-repeat 更改所有项目的排序顺序

    我创建了一个 tessellate 指令 可以让您包装多个 div
  • AngularJS 中的条件 ng-model 绑定

    我有一个模型 它是一个需要处理复杂和简单元素的数组 object element1 html element2 html url element3 html title Title 3 element4 html element5 html
  • 如何使用 Java Apache POI 在 Excel 中添加标题列?

    我正在编写一个java程序 其中我必须从XML文件中获取数据并将其放入excel文件中 在执行此操作时 我必须创建行标题并相应地添加数据 我知道如何创建列标题 我可以通过以下方式做到这一点 HSSFWorkbook workbook new
  • wkhtmltopdf 是否尊重 css 字体颜色?

    我正在使用 wkhtmltopdf 生成页面的 pdf 但它没有以正确的颜色显示任何字体 它们全部显示为黑色 颜色按照您的预期定义 panel dashboard p stat color bed000 并在浏览器中查看时正确显示 我把它称
  • 在执行回调之前等待 .each() .getJSON 请求完成

    我有一个jquery each循环 从 json 请求中检索页面上具有特定类的所有元素的远程数据 一组元素是一组li我想在之后使用另一个函数对标签进行排序li元素已使用远程信息进行更新 之后传入排序函数 each循环不会对列表进行排序 因为
  • 在稀疏表中选择一行第一个非空值

    使用下表 A B C ts 1 null null 2016 06 15 10 00 4 null null 2016 06 15 11 00 4 9 null 2016 06 15 12 00 5 1 7 2016 06 15 13 00
  • h1之后是否有必要使用H2

    如果文本太小 是否必须在 h1 之后使用 H2 那么我们可以在 h1 之后使用 h4 吗 它可以访问吗 从技术上讲 您可以使用这些的任意组合 从语义上讲 使用通用顺序是明智的 如果字体太小 可以使用 CSS 来更改 与标签h1 h6您赋予标
  • SQL Server - 使用递归外键进行级联 DELETE

    我花了很多时间试图找出如何实现删除时级联SQL Server 上的递归主键已经有一段时间了 我已经阅读了有关触发器 创建临时表等的内容 但尚未找到适合我的数据库设计的答案 这是一个用于演示目的的老板 员工数据库示例 TABLE employ
  • Flutter - 失败:构建失败并出现异常。 - 无法启动守护进程。 - Android Studio - VSCode

    每当我尝试使用 flutter run v 运行 flutter 应用程序时 都会收到以下错误 如果我不使用终端 只需单击 运行 则正在运行的 gradle 任务将继续运行 并且不会发生任何情况 I tried 在 gradle prope
  • Angular 2 ng-bootstrap 模态

    我使用组件而不是模板在应用程序中打开模态 然后我需要将对象模型传递给模态组件 问题是打字稿给出了 modalRef componentInstance 不作为属性存在的错误 我完全复制了示例表单演示页面 但再次给出同样的错误 并且永远不会在
  • 为什么有些语句在线程中运行时执行失败?

    我无法理解程序的行为这段代码示例 http rustbyexample com channels html use std comm use std thread Thread static NTHREADS uint 3 fn main
  • 服务器端处理与客户端处理+ajax?

    寻找一些一般性建议和 或想法 我正在创建一个我认为更像是一个网络应用程序而不是网页的东西 因为我想让它像一个 Gmail 应用程序 您可以让页面整天打开 同时将更新 推送 到页面 对于有兴趣我正在使用彗星编程技术 我以前从未创建过如此丰富的
  • 尝试将字符串转换为 MarketDataIncrementalRefresh

    我有一个文本文件FIX messages 所有这些和 MarketDataIncrementalRefresh 类型 X 我正在尝试找到一种使用的方法QuickFIX in C 创造MarketDataIncrementalRefresh消
  • 当用户从其他选项卡返回时重新加载页面

    我在某种重视更新的网站上工作 为此 当用户从另一个选项卡切换到网站的选项卡时 我需要刷新页面 有没有办法用 JavaScript jQuery 做到这一点 我知道location reload 用于刷新页面 但我不知道如何告诉 JavaSc
  • Three.js 2D 文本精灵标签

    我是 Three js 的新手 并且有一些属于 2D 文本的问题 我想要的是 我想要一些标签 例如 x y 和 z 轴 标签应始终面向相机 也许稍后它们应该只在悬停时才被显示 但那是另一个话题 我的问题是什么我找到了这个教程 这正是我想要达
  • 在 MongoDB GROUP BY 中执行 HAVING 的正确方法是什么?

    对于 SQL 中的这个查询 查找重复项 SELECT userId name FROM col GROUP BY userId name HAVING COUNT gt 1 我在 MongoDB 中执行了这个简单的查询 res db col