问题标签 [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 回答
3854 浏览

ruby-on-rails - 需要有关 MongoDB Schema for Chat App 的建议。嵌入式与相关文档

我开始一个 MongoDB 项目只是为了好玩,并作为学习 MongoDB/NoSQL 模式的机会。这将是一个实时聊天应用程序,堆栈包括:Rails 3、Ruby 1.9.2、Devise、Mongoid/MongoDB、CarrierWave、Redis、JQuery。

我将分别处理实时聊天轮询/消息队列。不确定如何使用 Node.js、APE 或自定义 EventMachine 应用程序。但是关于 Mongo,我正在考虑将它用于应用程序中的所有其他内容,特别是聊天日志和历史记录。

我的问题是如何最好地设计模式,因为我之前的所有经验都是使用 MySQL 和关系数据库模式。作为一个子问题,什么时候最适合我们嵌入文档和相关文档。

该应用程序将具有:

  • 拥有多个房间的多个帐户
  • 多个房间
  • 每个房间有多个用户
  • 允许用户进入的房间列表
  • 每个房间有多个用户聊天
  • 每个房间和每个用户的可搜索聊天日志
  • 给定聊天的可选文件附件

鉴于 Mongo(至少我上次检查时)的文档限制为 4MB,我不认为拥有房间集合并将所有房间聊天存储为嵌入式文档会很好。

从我到目前为止的想法来看,我正在考虑做类似的事情:

  • 帐户集合
  • 房间系列
    • 每个房间都与一个帐户相关联
    • 聊天室中所有聊天消息的聊天集合中的相关文档
    • 列出当前在房间内的所有用户的嵌入式文档
  • 用户集合
    • 列出用户当前所在的所有房间的嵌入式文档
    • 列出用户被允许进入的所有房间的嵌入式文档
  • 聊天合集
    • 每个聊天都与房间集合中的一个房间相关联
    • 每个聊天都与用户集合中的用户相关
    • 包含可选上传文件附件信息的嵌入式文档。

我主要关心的是我要走多远,直到这最终看起来像一个关系模式并且我打败了目的?肯定比嵌入更多相关。

另一个问题是引用相关文档比访问我听说过的嵌入文档要慢得多。

我想进行通用查询,例如:

  • 给我所有房间的帐户
  • 给我一个房间里的所有聊天(或按日期范围过滤)
  • 给我来自特定用户的所有聊天记录
  • 给我一个给定房间或给定组织的所有上传文件
  • ETC

关于如何以可扩展的方式有效地构建模式的任何建议?感谢大家。

0 投票
2 回答
1396 浏览

ruby-on-rails - 使用带有 rails 3 和 dry_crud 的 Mongoid 时替换 column_names

我一直在 Rails 3 和 Mongoid 上做了一个高峰,并带着对 Grails 中自动脚手架的美好回忆,当我发现: http ://github.com/codez/dry_crud 时,我开始寻找 ruby​​ 的 DRY 视图

我创建了一个简单的类

但是由于 dry_crud 依赖于 self.column_names 并且上面的类不继承自 ActiveRecord::Base 我必须像上面那样为 column_names 创建自己的实现。我想知道是否可以创建一个返回所有上述字段的默认实现,而不是硬编码列表?

0 投票
1 回答
517 浏览

ruby-on-rails - 为什么 Ruby on Rails 的 Enumerable 显示计数为 3 但“.each”仅打印出项目 1 次

我有一个从 Mongoid(MongoDB 对象映射器)返回的 Enumerable 对象

使用 HAML:

计数显示 3 类显示 Enumerable::Enumerator 但仅打印出 1 个项目

对象在控制器中使用

如果我改变

然后它打印出所有 3,但为什么 Enumerable 方法会失败?如果我在 rails 控制台中尝试使用p e它实际上会打印出 3 个项目。

0 投票
1 回答
681 浏览

many-to-many - mongoid 唯一性验证多对多关系

我有以下协会

现在如何检查employee_id单个员工的唯一性company

0 投票
3 回答
2261 浏览

ruby-on-rails-3 - 有人对在 Rails 3 中管理多态嵌套资源有任何提示吗?

在 config/routes.rb 中:

我也想允许更多的东西被评论。

我目前正在使用mongoid(mongomapper 与 Rails 3 的兼容性还不如我想的那样),并且注释是嵌入式资源(mongoid 还不能处理多态关系资源),这意味着我确实需要父资源为了找到评论。

是否有任何优雅的方法来处理以下一些问题:

在我的控制器中,我需要先找到父级,然后才能找到评论:

如果我开始添加更多可评论的内容,这将变得一团糟。

url_for([comment.parent, comment])不起作用,所以我将不得不在我的Comment模型中定义一些东西,但我认为我还需要在Comment模型中定义一个索引路由以及可能的编辑和新路由定义。

随着我走得更远,我可能需要处理更多的问题。

我无法想象我是第一个尝试解决此问题的人,是否有任何解决方案可以使这更易于管理?

0 投票
2 回答
884 浏览

ruby-on-rails - 如何使用 mongoid 实现“社交”方面

我正在尝试在我正在制作的网站上创建朋友网络。我正在使用 Mongoid。我如何实例化朋友?

我假设用户需要与多个其他用户建立关系关联。但是下面的代码:

告诉我我有一个无效的查询。我究竟做错了什么?有人对如何获得我想要的东西有任何建议吗?

0 投票
1 回答
125 浏览

ruby-on-rails - 使用Mongoid,如果我们修改一个项目,它会拉出一大块数据并保存一大块数据吗?

假设我们有一些使用 Mongoid 的东西:

所以 2、3 年后,会有 700 或 1000 个日期映射到哈希。如果我们修改1个数字,是否需要将整个大对象读入内存,进行更改,然后将大对象写回磁盘?或者 Mongoid 是否知道如何去那个特定的位置来改变那个 1 数字?

我想如果它是为了读取一个数字,它不应该需要读取 RAM 中的整个结构吗?

0 投票
5 回答
304 浏览

ruby-on-rails - 在 MongoDB 中使用巨大的“文档”不是很好吗?

由于我们可以以任何我们想要的方式构建 MongoDB,我们可以这样做

因此随着我们日复一日地向它添加数据,products文档和brands文档将变得越来越大。products3年后,中和中将有一千个元素brands。对 MongoDB 不好吗?我们是否应该将其分解为 4 个文档:

那么3年后,只有2000份“文件”?

0 投票
4 回答
9964 浏览

ruby-on-rails - 删除 mongoid 中的嵌入文档

我有一个只有名称字段的项目模型,其中还有与 line_items 的嵌入关系。类项目包括 mongoid::document 字段 :name embeds_many :line_items end

我想这更多的是 mongo 驱动程序问题:如果我有这样的文件

  • 1) 如何在 mongo 控制台中更新 id 为 601 的行项目?
  • 2)如何删除它?

谢谢!

0 投票
1 回答
389 浏览

mongodb - 如何在 mongo 中对嵌入的文档进行分页

假设我们有一个帖子集合,帖子中嵌入了一组评论。

我将如何写一个查询说,只拉出帖子 11-20?一个 mongoid 解决方案会更好,但一个 mongo 查询对象也可以