问题标签 [mongodb-ruby]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1130 浏览

mongodb - Mongoid:检索 _id 存在于另一个集合中的文档

我正在尝试根据对另一个集合中这些文档的引用的存在从集合中获取文档。

假设我有两个系列UsersCourses模型如下所示:

  • 用户:{_id, name}
  • 课程:{_id, name, user_id}

注意:这只是一个假设的例子,而不是实际的用例。所以让我们假设在Course. 让我们瘦Course as CourseRegistrations

在这里,我在UserCourse保持user_id_Id的引用User。请注意,它存储为字符串。

现在我想检索注册到一组特定课程的所有用户。

我知道可以通过两个查询来完成。那是首先运行一个查询并从该组课程的集合中获取该users_id字段。Course然后通过使用和上一个查询中检索到的用户 id来查询User集合。$in但是如果文档的数量在数万或更多,这可能并不好。

有没有更好的方法在一个查询中做到这一点?

0 投票
1 回答
179 浏览

mongodb - 获取第 100 行时遇到延迟

我正在从集合中获取所有行,并在第 100 行遇到延迟。我知道 find 方法会返回游标,而不是所有数据都预先并且在某些时候需要获取更多数据。但是第 100 行是唯一的延迟。

然后在没有可见延迟的情况下达到 100 000 张图像。

使用红宝石脚本:

使用的图像集合 (json)

mongoimport --db pics --collection images file_name

问题是:

  • 一些数据是否与初始光标一起出现?
  • 为什么第 100 行的唯一延迟?也许我错过了一些东西,但那时我什至没有看到 IO 读取

谢谢

0 投票
1 回答
1369 浏览

ruby - Mongoid 3.1.4 未定义方法'has_key?' 调用“Document.create”时

我在尝试使用 Mongoid (v 3.1.4) 将(非常简单的)实体持久保存到 MongoDB(v 2.4.4)时遇到问题。我在 OS X 上使用 MRI 和 Ruby 2.0.0-p195。

这是我的课程(Person.rb):

最后一句话向我打招呼

[...]mongoid/attributes.rb:320:in 'method_missing': 未定义的方法 'has_key?' 对于 nil:NilClass (NoMethodError)

这是我的“mongoid.yml”:

与数据库实例的连接似乎没问题,因为创建了数据库(“rbtest”),但是集合和文档失败。我已经尝试过“创建!” 和“安全。保存!” 无济于事。

我尝试实现 has_key?方法,我找不到任何文档,所以我在这里有点茫然。

与往常一样,非常感谢任何帮助。

问候,


更新——解决方案:

@Frederik Cheung 的回答很到位。这是工作代码(用@mu-is-too-short 的建议更新)

0 投票
1 回答
1134 浏览

ruby - MongoDB驱动程序ruby,删除文档中的字段

我正在尝试删除大文档中的字段,因此我想做一些事情:

但这是不可能的。我不想重写整个文档,知道吗?

编辑:我正在使用https://github.com/mongodb/mongo-ruby-driver

0 投票
0 回答
56 浏览

mongodb - 如何更新 ids 字段?

不幸的是,我不能使用位置运算符,因为存在一个不允许超过 1 个嵌入文档的错误:https ://jira.mongodb.org/browse/SERVER-831

所以这不起作用(使用 Mongodb Ruby 驱动程序):

鉴于以下集合。关系嵌入在日期中,日期嵌入在提供者中。

如何更新ids字段?

0 投票
0 回答
74 浏览

ruby - Mongomapper 多次抛出错误消息

我有一个简单的模型 - 在我的 Ruby/MongoMapper 应用程序中购物。

我不知道为什么有时我只收到一条错误消息,有时我收到三条类似这样的错误消息:

'验证失败:用户已被占用,用户已被占用,用户已被占用'

是的,我故意多次添加相同的 user_id。

这是我的代码:

结果:

更新:

好像去掉

解决“问题”。但为什么...

0 投票
1 回答
963 浏览

ruby - 具有多个 $nin 的 Mongodb 查询

我举了这个例子:

形成 mongodb.org 网站。

每当我尝试多次使用 $nin 时, find_and_modify 都会失败。我想实现的目标:

但似乎我不允许多次使用 $nin 。我知道 $push 不能这样使用,所以我只在多个字段上使用 $push 一次。但是如何将它用于$nin?

0 投票
1 回答
249 浏览

ruby - Ruby 中的 Mongo Group 函数调用

我有一个这样的 mongodb 集合

{"assigneeId" => 1000, "status" => 3, "starttime" => "2014 Feb 25", "numofdays => 6} {"assigneeId" => 1000, "status" => 2, "starttime" => “2014 年 1 月 10 日”,“numofdays => 6} {“assigneeId” => 1000,“status” => 3,“starttime” => “2014 年 1 月 1 日”,“numofdays => 20}

我写了一个 MongoDB 查询,用状态为 3 的 assigneeId 对上述集合进行分组,并像这样添加 numofdays 的值

db.events.group ( { key: {assigneeId:1}, cond: {status: {$gte: 3}}, reduce: function (curr, result) {result.total++; result.numofdays += curr.numofdays; },初始:{total:0,numofdays:0}})

这给出了 Mongodb cli 预期的输出。

当我编写用于执行相同查询的 ruby​​ 代码时,我无法使其工作。对于类似的问题,我得到了很多不同的点击,但似乎没有一种格式有效。我无法克服 ruby​​ 中用于分组功能的语法错误。请注意我没有使用 mongoid。如果我可以使用聚合框架完成这项工作,那对我来说也很好。

这是我写的 ruby​​ 查询和相同的错误。

我得到的错误

analyze.rb:43: 语法错误,意外 ',',期待 ')' out = @events_h.group (["assigneeId"], { }, { }, "function() { }") ^ analyze.rb: 43:语法错误,意外的')',期待keyword_end analyze.rb:83:语法错误,意外的输入结束,期待keyword_end

任何帮助深表感谢。

谢谢

0 投票
1 回答
903 浏览

ruby - 更新嵌套哈希 MongoDB - Ruby

我正在尝试使用简单值更新 MongoDB 文档中的哈希,但它将值存储在数组中。我使用 mongo 的 ruby​​ 驱动程序

代码会更好地解释,因为我的英语不好。

我有的 :

我想要的是 :

我得到什么:

我是怎么到那里的:

我已经尝试过在 MongoDB 中更新嵌套文档,但我看不出我做错了什么

0 投票
1 回答
779 浏览

ruby - ruby mongodb驱动推送到数组

假设我有一个文档Person,我希望添加Tags到这个文档中。

所以我想要一个文件看起来像

每次有人选择兴趣时,我都想将其附加到tags列表中。

这是我的尝试:

如果我运行它,我会得到一个异常:

我究竟做错了什么?