问题标签 [mongoid]

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 投票
2 回答
2589 浏览

sql - 如何避免在 MongoDB(使用 Mongoid)或 ActiveRecord(使用 MySQL 的 Rails)中插入两次相同的记录?

例如,如果我们正在做 Analytics 记录 page_type、item_id、date、pageviews、timeOnPage。

似乎它们有几种避免它的方法。有自动的方法吗?

  1. 在唯一标识记录的字段上创建索引,例如 [page_type, item_id, date]并使索引唯一,这样在添加相同的记录时,它会拒绝它。

  2. 或者,如果数据库或框架支持,则将上述设置为唯一的主索引。不过,在 Rails 中,通常 ID 1、2、3、4 是主索引。

  3. 或者,使用 查询记录[page_type, item_id, date],然后更新该记录(如果它已经存在)(或者如果 pageviews 和 timeOnPage 已经具有相同的值,则不执行任何操作)。如果记录不存在,则使用此数据插入一条新记录。但是如果需要以这种方式查询记录,看起来我们无论如何都需要在这三个字段上建立索引。

  4. 一直插入新记录,但是在查询值时,使用类似

    /li>

也就是说,获取最新创建的记录并忽略其余记录。但这似乎是 1 条记录的解决方案,但在汇总值(进行聚合)时不太可行,例如select sum(pageviews)or select count(*)

除了使用上述方法之外,还有一些自动解决方案吗?

0 投票
1 回答
3262 浏览

ruby-on-rails - Mongoid Object.all 似乎返回了很多 []

为什么这不起作用:

0 投票
2 回答
2240 浏览

ruby-on-rails - MongoDB如何只比较日期而忽略时间,例如date <= '2010-09-10'?

由于某些原因:

返回 0,但是

返回 230,这是记录(文档)的数量。

实际上,顶部的第一行在另一种情况下有效,所以很奇怪。

只能比较日期,因为如果是

那么所有日期为 2010-09-10 的记录都不会被计算在内,因为 Time.parse('2010-09-10') 将给出 2010-09-10 00:00:00,所以所有记录都必须是 2010 -09-09 午夜前。换句话说,2010-09-10 2am 将不包括在内,因为 2am 不是“小于或等于”00:00:00。它可以通过使用被黑客入侵

但这有点难看。如果有一种方法可以像这篇文章的第一行代码那样按日期进行比较?

0 投票
1 回答
5308 浏览

ruby-on-rails - Mongoid 有 Map/Reduce 吗?

我正在使用 Ruby 代码从 Mongoid 返回的数组中计算总和。

但也许使用 Map/Reduce 可以更快,除了我在 mongoid.org 和 Google 上没有看到任何 Map Reduce 文档

也不给出任何结果。(或使用MapReduceMap/Reduce

MongoDB 的网站上有文档

但也需要将 Map Reduce 与 Mongoid 一起使用。

0 投票
2 回答
3357 浏览

mongodb - 为什么 MongoDB 可以创建唯一索引而 Mongoid 不能?

在 MongoDB shell 中,如果我执行以下操作,则会创建一个索引,并防止插入重复记录:

但我认为 Mongoid 也可以这样做: http ://mongoid.org/docs/indexing/

所以我有:

并做一个

但是仍然可以插入重复记录吗?

更新:这很奇怪,但是在我在 MongoDB shell 中添加索引并删除集合之后,然后在 MongoDB Shell 或 Mongoid 中重新创建索引,现在我可以在 MongoDB shell 中删除集合,然后 rake 创建index,并使用 mongoid 两次添加相同的文档,mongod 会说重复键错误。

0 投票
2 回答
3617 浏览

ruby - 如何使用 MongoDB Ruby Driver 进行“分组”(group by)?

使用 Ruby 驱动程序与MongoDB Group相关

如果我想在 SQL 中执行以下操作:

我以为 MongoDB 的文档说

http://api.mongodb.org/ruby/current/Mongo/Collection.html#group-instance_method

所以从另一篇文章中,我正在使用:

但它实际上返回

这是集合中记录(文档)的总数。上面有什么不正确的吗?我认为密钥可能是一个静态字符串,如

http://kylebanker.com/blog/2009/11/mongodb-count-group/

但它不在另一个stackoverflow帖子中。

更新:实际上,在上面的链接中,解决方案像

有效,但只是想知道为什么这篇文章中的第一种方法不起作用。

0 投票
2 回答
1423 浏览

ruby - find_by_sql 等效于 mongoid?

是否有某种与 mongoid 等效的 find_by_sql ,您可以在其中传递一个 mongo 查询并从结果中具体化 Mongoid::Document s?

0 投票
1 回答
2213 浏览

mongodb - MongoDB 的 Map/Reduce 是否总是以浮点数返回结果?

我正在使用 Mongoid,它位于 Ruby MongDB 驱动程序之上。即使我的 Map 发出的是 a parseInt(num),Reduce 的返回也是 a parseInt(num),但最终结果仍然是浮点数。

这是 MongoDB 特有的吗?有什么方法可以使它成为整数吗?

0 投票
2 回答
3070 浏览

tags - 关于 Mongoid/MongoDB 标签树结构的建议

我正在寻找有关如何构建此数据模型的标签部分的一些建议:

这是它的简化版本:

  • 一个站点有很多帖子(关系关联 [references_many in mongoid speak])。一个站点有一个标签树
  • 帖子有一组标签(网站标签的子集,顺序无关紧要)

我关心的用例是:

  1. 以树的形式快速保存和检索站点的标签(即能够在 UI 中将它们显示为树)
  2. 快速查询站点的哪些帖子具有特定标签。

如果没有树结构,http ://github.com/wilkerlucio/mongoid_taggable 可以解决我的用例。我已经看到了 Mongoid 的一些acts_as_tree 端口,例如:

它们似乎都采用关系方法而不是嵌入式方法来存储层次结构,这意味着上面的两个用例都会很慢(可能需要 map/reduce)。

有没有人做过类似的事情,或者有什么建议?理想情况下,我会喜欢 Mongoid 解决方案,但我也很乐意使用 Ruby 驱动程序。

0 投票
1 回答
384 浏览

mongodb - 有没有办法在 MongoDB 的 map_reduce 之前通过“查找”?

以下行有效:

但是有办法吗

甚至过滤日期范围,例如date >= "2010-08-01" and date <= "2010-08-31"