使用 Ruby 驱动程序的 MongoDB Group

2023-11-30

我正在尝试带回一个包含用于描述博客文章的计数的年/月组合列表。我们的想法是,它们将像这样显示:

  • 2010 年 1 月(1 篇文章)
  • 2009 年 12 月(2 个职位)
  • ...

我已经设法使用 MongoDB JS shell 让它工作,并且它以有用的格式返回结果:

db.posts.group({ 
    keyf: function(x){ 
                      return { 
                              month: x.datetime.getMonth(), 
                              year:x.datetime.getFullYear() 
                      }; 
    }, 
    reduce: function(x,y){ y.count++ }, 
    initial:{count:0} 
})

Results:

[ { "month" : 0, "year" : 2010, "count" : 3 },
  { "month" : 0, "year" : 1970, "count" : 1 } ]

这太棒了,正是我所追求的。但是,尝试将其转换为适合 ruby​​ 驱动程序的代码,我无法让它工作。我查看了文档,根据我的理解,以下内容应该产生相同的结果(我正在使用 MongoMapper,因此Post.collection):

@archive = Post.collection.group(
  "function(x) { return { month: x.datetime.getMonth(), year:x.datetime.getFullYear() }; }",
  nil, { :count => 0 }, 'function(x,y){y.count++}', true)

我没有返回大量有用的数据,而是陷入了混乱:

{
  "function(x) { return { month: x.datetime.getMonth(), year:x.datetime.getFullYear() }; }" => nil, 
  "count" => 4.0
}

看来,要么它完全违背了它自己的文档(以及我对源代码的理解!),要么我在这里遗漏了一些基本的东西。我几乎要拔掉头发了,感激地接受任何帮助。


这是非常奇怪的行为。我刚刚在本地运行了您的代码,一切正常。您能否验证您使用的驱动程序版本是否为 0.18.2?如果是这样,请确保这是唯一安装的版本(只是作为健全性检查)。

我认为这应该没有什么区别,但我没有从 MongoMapper 运行#group——我单独使用 gem。你也可以尝试一下。这是我运行的代码:

require 'rubygems'
require 'mongo'

d = Mongo::Connection.new.db('blog')
c = d['post']

p c.group("function(x) { return { month: x.date.getMonth(), year:x.date.getFullYear() }; }", 
  nil, 
  { :count => 0 }, 
  "function(x,y){y.count++}", 
  true)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Ruby 驱动程序的 MongoDB Group 的相关文章

  • 如何在猫鼬中使用聚合

    如何在 mongoose 中定义以下 MongoDB 聚合查询 db contacts aggregate group id code Code name Name 查询的目的是获取不同代码和名称的列表 我当前的模型代码是 use stri
  • 直接或通过包含定义嵌套类

    假设我正在为我的家庭存储系统建模 我有很多不同类型的Container 而且我发现其中很多都有装饰品 因此我为这种常见情况设置了一些辅助代码 我的容器中有我的Mantlepiece and my Bookcase 我只在前者上存放装饰品 而
  • 为 .API 文件启用自动完成功能?

    有谁知道如何使用 N 站点上提供的 API 文件在 Notepad 中自动完成工作 在 API 文件夹中具有 XML 自动完成文件的语言中 自动完成功能工作得很好 但对于使用 API 文件的语言 ruby AutoIt 等 完全不起作用 根
  • 如何使用 minitest 运行所有测试?

    我下载了一个项目的源代码 发现了一个错误并修复了它 现在我想运行测试来看看我是否破坏了任何东西 测试是在 minitest DSL 中进行的 我如何同时运行它们 我搜索了适用的 rake 任务等 但没有找到 这是一个链接耙子 测试任务 ht
  • 如何在 Rails 3 中连接表并计算记录数?

    我有一个Collection有很多硬币的类 我正在尝试选择拥有两枚以上硬币的收藏品 目前 我可以直接通过 Ruby 来完成此操作 但效率极低 我当前的代码 collections Collection all select c c coin
  • 不将所需的文件包含到 vim 全方位补全中

    如果我尝试在具有 require xxx 语句的 Ruby 文件中自动完成 它会开始扫描所需的所有文件 以及所需文件所需的文件 它每次都会这样做 是否可以使 vim 自动完成功能不扫描所需文件或仅扫描特定路径中的文件 例如仅 app 以下之
  • 在 config.js 中打开 admin 以查看服务器统计信息

    拉动后运行此命令 docker run d p 27017 27017 e MONGO INITDB ROOT USERNAME admin e MONGO INITDB ROOT PASSWORD password name mongod
  • 如何在 mongodb-native findAndModify 中使用变量作为字段名称?

    在使用 mongodb native 驱动程序的这段代码中 我想增加在单独变量中指定的字段的值 问题在于 在这种情况下 inc 子句中的字段名称将是 变量 而不是变量的内容 在查询部分中 所选变量按预期工作并找到正确的 ID var sel
  • mongoid 中的嵌入文档与哈希数据类型

    我找不到任何讨论此问题的博客文章或文档 它们 嵌入式文档和哈希数据类型 非常相似 彼此相比有何好处或限制 考虑我的架构设计 class HistoryTracker include Mongoid Document include Mong
  • 匹配一对未转义的平衡分隔符

    如何匹配一对不被反斜杠转义的平衡分隔符 本身不被反斜杠转义 无需考虑嵌套 例如 对于反引号 我尝试了此操作 但是转义的反引号无法按转义的方式工作 regex lt lt hello how are you gt 1 how expected
  • 在 RSpec 测试期间抑制控制台输出

    我正在测试在控制台上放置一些消息的类 包含 put p 警告等 我只是想知道在 RSpec 测试期间是否有能力抑制此输出 我压抑puts通过重定向在我的类中输出 stout到一个文本文件 这样 如果我出于任何原因需要查看输出 它就在那里 但
  • ActiveRecord 查询,按关联排序,最后一个 has_many

    我试图列出所有Users by the created at最近创建的关联记录 通讯 列 到目前为止我所拥有的 User includes communications order communications created at IS
  • Rails:验证字符串的最小和最大长度,但允许其为空白

    我有一个想要验证的字段 我希望该字段能够留空 但如果用户输入数据 我希望它采用某种格式 目前我在模型中使用以下验证 但这不允许用户将其留空 validates length of foo maximum gt 5 validates len
  • Ruby:基于控制台的菜单

    我有一个名称和 URL 数组 并希望以向上 向下滚动菜单的形式向用户呈现名称列表 基本上是什么dialog允许在外壳内 我调查过ncurses ruby rdialog and HighLine但它们似乎要么作为一个项目被放弃 要么甚至从它
  • 将 R 与 Rsruby 集成

    我想知道是否有人有将 R 集成到 Rails 中的经验 特别是在 heroku 上 我熟悉 rsruby gem 它是 ruby 与 R 事实上的 也许是唯一的 绑定 但是有关将 R 与 Rails 集成的文档即使不是不存在 也是很少的 比
  • Mongoose 4.4.12 中 Schema 方法范围内的“this”为空 {}

    当在 Schema 方法内记录到控制台时 对象 this 为 这发生在一天前 我一直在阅读教程和其他堆栈溢出问题 但不幸的是我没有找到原因的解决方案 这是我的模型 var mongoose require mongoose var Sche
  • Flask 不加载配置

    我在 Flask 中加载配置时遇到问题 from config import config DevelopmentConfig TestingConfig ProductionConfig def create app config nam
  • 设计重定向到成功登录似乎在第一次登录尝试时卡住

    我正在使用 Ruby on Rails 开发一个小型应用程序 并使用 Devise 进行身份验证 我有两个登录系统设置 一个是user另一个是employee 当使用正确的电子邮件和密码登录时 设计会发送正确的重定向到返回路径 但它会卡在那
  • 载波无法删除图像

    我现在使用 Carrierwave 上传图像 一切都很好 除了一个 当我添加用于删除上传图像的复选框时 我收到错误 无法批量分配受保护的属性 remove image Form Model class Manufacturer lt Act
  • MongoDB 存储过程等效项

    我有一个包含商店列表的大型 CSV 文件 其中一个字段是邮政编码 我有一个名为 ZipCodes 的独立 MongoDB 数据库 它存储任何给定邮政编码的纬度和经度 在 SQL Server 中 我将执行一个名为 InsertStore 的

随机推荐

  • NumberField 或如何让 TextField 输入 Double、Float 或其他带点的数字

    根据评论这个问题我做了一个自定义的 SwiftUIView基于一个TextField 它使用数字键盘 只能输入数字和点 只能输入一个点 点 并且可以通过Bindable Double State价值通过View用于输入 但有一个错误 当您删
  • iOS 上的 CVOpenGLESTextureCache 与 glTexSubImage2D

    我的 OpenGL 应用程序使用 OpenGL 全屏渲染纹理并定期更新其中的一部分 到目前为止 我一直在使用 glTexImage2D 来推送初始纹理 然后使用 glTexSubImage2D 更新脏区域 为此 我使用单缓冲 这效果很好 我
  • 大数的质因数分解[关闭]

    Closed 这个问题是无关 目前不接受答案 我想求小于10 12的大数的质因数分解 我得到了这个代码 用java public static List
  • 类工厂方法实现

    因此 我正在研究 Objective C 的 Apple 文档 在开始 iphone 开发之前 其中一项练习指出 我应该创建一个指定的初始值设定项 具有 3 个参数 和合适的工厂方法 现在我根据我的理解这样做了 但我无法实现工厂方法 因为我
  • 以编程方式清除 Android 上 PhoneGap/Cordova 应用程序的缓存以模拟全新安装?

    这与我之前的问题有关 每次安装应用程序时 如何清除 Android 模拟器上应用程序的 localStorage 它还建立在 如何清除 Android 应用程序缓存 and 如何以编程方式清除应用程序数据 上述问题都没有给出适用于 Andr
  • 新线程的异步等待行为

    我试图理解 async await 的精确行为 但在理解它时遇到了一些麻烦 考虑这个例子 public async void StartThread while true SomeOtherClass SomeSynchronousStuf
  • win 秒更新后 MS-access 无法捕获树视图事件

    使用 TreeView MSComctlLib TreeCtrl 2 的 Access 2010 应用程序按预期显示和填充 但在 Windows 安全补丁之后突然不会将事件触发回 VBA 尝试回滚 syswow64 中的 MSCOMCTL
  • 获取远程PC的日期时间?

    是否有任何类可用于获取 net 中远程 PC 的日期时间 为此 我可以使用计算机名称或时区 对于每种情况 是否有不同的方法来获取当前日期时间 我使用的是 Visual Studio 2005 我给你一个解决方案 使用WMI 您可能需要也可能
  • 如何使用请求模块下载,然后上传文件而无需中间文件

    我想先下载一个图像文件到服务器 然后将该文件上传到其他服务器 如果没有download file step 这将非常简单 var fs require fs var path tmp test png var formData method
  • 带 bo​​otstrap.css 的 webpack 不起作用

    这是我的webpack config js file var ExtractTextPlugin require extract text webpack plugin webpack require webpack module expo
  • 括号可以使用任意标识符作为参数吗? C++

    例如 是 const int someInt 有效代码 如果是这样 该声明与 const int someInt 您可以在两边放置任意多个括号表达式而不改变含义 但你不能对类型做同样的事情 特别是 正如其他人指出的那样 代码中的括号将含义从
  • 在 R 中创建地形图

    我正在尝试创建一个脚本 该脚本将为给定的一组坐标生成二维地形或等高线图 我的目标类似于 contour volcano 但对于用户设置的任何位置 事实证明 这具有惊人的挑战性 我努力了 library elevatr library tid
  • 我可以使用 Order By 和 ToLower 对 DocumentDB 执行不区分大小写的字符串排序吗?

    我想按标题的字母顺序对 DocumentDB 集合中的记录进行排序 起初我认为这是有效的 SELECT c Title FROM c ORDER BY c Title 但正如预期的那样 这会将小写字母排在大写字母之后 我希望我的搜索不区分大
  • android:对话框或弹出窗口内的webview

    如何在对话框或弹出窗口中添加 Web 视图 我的网络视图保留 URL WebView loadurl 当视图添加到对话框内时 它仍然移动到浏览器 我去过android 在对话框中加载webview但没有例子说明如何做吗 谢谢 这是示例 Al
  • 适用于 Java 8 的 Tomcat 8 Maven 插件

    Is the tomcat7 maven plugin使用 tomcat 8 服务器和 java 8 我找不到任何tomcat8 maven plugin 是的你可以 In your pom xml 添加tomcat插件 您可以将其用于 T
  • 是否可以防止 TeamCity 中的构建链被中断?

    我在 TeamCity 7 1 3 中进行了以下设置 项目A 构建和部署 A 测试 A 快速 测试 A 慢速 测试 A 非常慢 项目B 构建和部署 B 测试 B 快速 测试 B 慢速 A 的所有测试都依赖于 构建和部署 A B 的所有测试都
  • printf C 中十六进制值的最后一个字节

    我有一个简单的问题 代码非常短 所以我只是将其发布在这里 include
  • 动态设置 ui-sref Angularjs 的值

    我搜索过类似的问题 但出现的问题似乎略有不同 我正在尝试动态更改链接的 ui sref 此链接指向向导表单的下一部分 下一部分取决于下拉列表中所做的选择 我只是想根据选择框中的某些选择来设置 ui sref 属性 我可以通过绑定到在进行选择
  • 如何防止gcc优化破坏rep movsb代码? [复制]

    这个问题在这里已经有答案了 我尝试使用以下命令创建我的 memcpy 代码rep movsb操作说明 当禁用优化时 它可以完美地适应任何尺寸 但是 当我启用优化时 它无法按预期工作 问题 如何防止gcc优化破坏rep movsb代码 我的代
  • 使用 Ruby 驱动程序的 MongoDB Group

    我正在尝试带回一个包含用于描述博客文章的计数的年 月组合列表 我们的想法是 它们将像这样显示 2010 年 1 月 1 篇文章 2009 年 12 月 2 个职位 我已经设法使用 MongoDB JS shell 让它工作 并且它以有用的格