问题标签 [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.
sql - 如何避免在 MongoDB(使用 Mongoid)或 ActiveRecord(使用 MySQL 的 Rails)中插入两次相同的记录?
例如,如果我们正在做 Analytics 记录 page_type、item_id、date、pageviews、timeOnPage。
似乎它们有几种避免它的方法。有自动的方法吗?
在唯一标识记录的字段上创建索引,例如
[page_type, item_id, date]
并使索引唯一,这样在添加相同的记录时,它会拒绝它。或者,如果数据库或框架支持,则将上述设置为唯一的主索引。不过,在 Rails 中,通常 ID 1、2、3、4 是主索引。
或者,使用 查询记录
[page_type, item_id, date]
,然后更新该记录(如果它已经存在)(或者如果 pageviews 和 timeOnPage 已经具有相同的值,则不执行任何操作)。如果记录不存在,则使用此数据插入一条新记录。但是如果需要以这种方式查询记录,看起来我们无论如何都需要在这三个字段上建立索引。一直插入新记录,但是在查询值时,使用类似
/li>
也就是说,获取最新创建的记录并忽略其余记录。但这似乎是 1 条记录的解决方案,但在汇总值(进行聚合)时不太可行,例如select sum(pageviews)
or select count(*)
。
除了使用上述方法之外,还有一些自动解决方案吗?
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。它可以通过使用被黑客入侵
但这有点难看。如果有一种方法可以像这篇文章的第一行代码那样按日期进行比较?
ruby-on-rails - Mongoid 有 Map/Reduce 吗?
我正在使用 Ruby 代码从 Mongoid 返回的数组中计算总和。
但也许使用 Map/Reduce 可以更快,除了我在 mongoid.org 和 Google 上没有看到任何 Map Reduce 文档
也不给出任何结果。(或使用MapReduce
或Map/Reduce
)
MongoDB 的网站上有文档
但也需要将 Map Reduce 与 Mongoid 一起使用。
mongodb - 为什么 MongoDB 可以创建唯一索引而 Mongoid 不能?
在 MongoDB shell 中,如果我执行以下操作,则会创建一个索引,并防止插入重复记录:
但我认为 Mongoid 也可以这样做: http ://mongoid.org/docs/indexing/
所以我有:
并做一个
但是仍然可以插入重复记录吗?
更新:这很奇怪,但是在我在 MongoDB shell 中添加索引并删除集合之后,然后在 MongoDB Shell 或 Mongoid 中重新创建索引,现在我可以在 MongoDB shell 中删除集合,然后 rake 创建index,并使用 mongoid 两次添加相同的文档,mongod 会说重复键错误。
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帖子中。
更新:实际上,在上面的链接中,解决方案像
有效,但只是想知道为什么这篇文章中的第一种方法不起作用。
ruby - find_by_sql 等效于 mongoid?
是否有某种与 mongoid 等效的 find_by_sql ,您可以在其中传递一个 mongo 查询并从结果中具体化 Mongoid::Document s?
mongodb - MongoDB 的 Map/Reduce 是否总是以浮点数返回结果?
我正在使用 Mongoid,它位于 Ruby MongDB 驱动程序之上。即使我的 Map 发出的是 a parseInt(num)
,Reduce 的返回也是 a parseInt(num)
,但最终结果仍然是浮点数。
这是 MongoDB 特有的吗?有什么方法可以使它成为整数吗?
tags - 关于 Mongoid/MongoDB 标签树结构的建议
我正在寻找有关如何构建此数据模型的标签部分的一些建议:
这是它的简化版本:
- 一个站点有很多帖子(关系关联 [references_many in mongoid speak])。一个站点有一个标签树
- 帖子有一组标签(网站标签的子集,顺序无关紧要)
我关心的用例是:
- 以树的形式快速保存和检索站点的标签(即能够在 UI 中将它们显示为树)
- 快速查询站点的哪些帖子具有特定标签。
如果没有树结构,http ://github.com/wilkerlucio/mongoid_taggable 可以解决我的用例。我已经看到了 Mongoid 的一些acts_as_tree 端口,例如:
- http://github.com/benedikt/mongoid-tree
- http://github.com/saks/mongoid_acts_as_tree
- http://github.com/ticktricktrack/mongoid_tree
它们似乎都采用关系方法而不是嵌入式方法来存储层次结构,这意味着上面的两个用例都会很慢(可能需要 map/reduce)。
有没有人做过类似的事情,或者有什么建议?理想情况下,我会喜欢 Mongoid 解决方案,但我也很乐意使用 Ruby 驱动程序。
mongodb - 有没有办法在 MongoDB 的 map_reduce 之前通过“查找”?
以下行有效:
但是有办法吗
甚至过滤日期范围,例如date >= "2010-08-01" and date <= "2010-08-31"
?