问题标签 [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.
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
关于如何以可扩展的方式有效地构建模式的任何建议?感谢大家。
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 创建自己的实现。我想知道是否可以创建一个返回所有上述字段的默认实现,而不是硬编码列表?
ruby-on-rails - 为什么 Ruby on Rails 的 Enumerable 显示计数为 3 但“.each”仅打印出项目 1 次
我有一个从 Mongoid(MongoDB 对象映射器)返回的 Enumerable 对象
使用 HAML:
计数显示 3 类显示 Enumerable::Enumerator 但仅打印出 1 个项目
对象在控制器中使用
如果我改变
至
然后它打印出所有 3,但为什么 Enumerable 方法会失败?如果我在 rails 控制台中尝试使用p e
它实际上会打印出 3 个项目。
many-to-many - mongoid 唯一性验证多对多关系
我有以下协会
现在如何检查employee_id
单个员工的唯一性company
ruby-on-rails-3 - 有人对在 Rails 3 中管理多态嵌套资源有任何提示吗?
在 config/routes.rb 中:
我也想允许更多的东西被评论。
我目前正在使用mongoid(mongomapper 与 Rails 3 的兼容性还不如我想的那样),并且注释是嵌入式资源(mongoid 还不能处理多态关系资源),这意味着我确实需要父资源为了找到评论。
是否有任何优雅的方法来处理以下一些问题:
在我的控制器中,我需要先找到父级,然后才能找到评论:
如果我开始添加更多可评论的内容,这将变得一团糟。
也url_for([comment.parent, comment])
不起作用,所以我将不得不在我的Comment
模型中定义一些东西,但我认为我还需要在Comment
模型中定义一个索引路由以及可能的编辑和新路由定义。
随着我走得更远,我可能需要处理更多的问题。
我无法想象我是第一个尝试解决此问题的人,是否有任何解决方案可以使这更易于管理?
ruby-on-rails - 如何使用 mongoid 实现“社交”方面
我正在尝试在我正在制作的网站上创建朋友网络。我正在使用 Mongoid。我如何实例化朋友?
我假设用户需要与多个其他用户建立关系关联。但是下面的代码:
告诉我我有一个无效的查询。我究竟做错了什么?有人对如何获得我想要的东西有任何建议吗?
ruby-on-rails - 使用Mongoid,如果我们修改一个项目,它会拉出一大块数据并保存一大块数据吗?
假设我们有一些使用 Mongoid 的东西:
所以 2、3 年后,会有 700 或 1000 个日期映射到哈希。如果我们修改1个数字,是否需要将整个大对象读入内存,进行更改,然后将大对象写回磁盘?或者 Mongoid 是否知道如何去那个特定的位置来改变那个 1 数字?
我想如果它是为了读取一个数字,它不应该需要读取 RAM 中的整个结构吗?
ruby-on-rails - 在 MongoDB 中使用巨大的“文档”不是很好吗?
由于我们可以以任何我们想要的方式构建 MongoDB,我们可以这样做
因此随着我们日复一日地向它添加数据,products
文档和brands
文档将变得越来越大。products
3年后,中和中将有一千个元素brands
。对 MongoDB 不好吗?我们是否应该将其分解为 4 个文档:
那么3年后,只有2000份“文件”?
ruby-on-rails - 删除 mongoid 中的嵌入文档
我有一个只有名称字段的项目模型,其中还有与 line_items 的嵌入关系。类项目包括 mongoid::document 字段 :name embeds_many :line_items end
我想这更多的是 mongo 驱动程序问题:如果我有这样的文件
- 1) 如何在 mongo 控制台中更新 id 为 601 的行项目?
- 2)如何删除它?
谢谢!
mongodb - 如何在 mongo 中对嵌入的文档进行分页
假设我们有一个帖子集合,帖子中嵌入了一组评论。
我将如何写一个查询说,只拉出帖子 11-20?一个 mongoid 解决方案会更好,但一个 mongo 查询对象也可以