ruby-on-rails - Mongoid:如何将集合限制为一个条目?
问题描述
问题::
有没有办法将一个表限制为一个条目?
我想从模型中执行此操作,因此只能创建和修改一个条目。目前我只允许修改 Object.first 条目。我也愿意听取更好的做法。提前致谢
背景::
我是 Mongo 的新手,我发现的唯一信息是创建一个新集合。
使用 Mongo DB,您可以使用 Capped Collections 进行限制。
设置 mongo db 集合的限制
“Mongoid 不提供动态创建封顶集合的机制 - 您需要使用 Moped 或通过 Mongo 控制台自己创建这些集合。”
https://mongoid.github.io/old/en/mongoid/docs/persistence.html
session.command(create: "name", capped: true, size: 10000000, max: 1000)
解决方案
根据您要实现的目标,上限集合可能不适合您的用例。在Capped Collection Documentation中,它说:
Capped 集合的工作方式类似于循环缓冲区:一旦集合填满了分配的空间,它就会通过覆盖集合中最旧的文档来为新文档腾出空间。
如果您使用上限集合然后插入一个新文档,它只会覆盖现有文档,而不是引发错误。当然,您可以只插入一个包含更新信息的新文档,而不是覆盖现有文档,但我不确定您是否打算这样做。(如果这有帮助,您可以在设置 MongoDB 实例时通过 Mongo Shell 创建一个上限集合。)
总的来说,听起来在您的应用程序逻辑中执行此规则是可行的方法。我还会花一些时间考虑您是否真的需要将这些信息保存在数据库中——Ruby 单例类或一些环境变量会更适合您的需要吗?
推荐阅读
- java - Dspring 配置位置不匹配
- c - 如何正确调用我创建的函数到主函数?
- oracle - 多个 SELECT,其中一个 FROM 条件 - IBM Cognos Analytics / Oracle
- java - 在长时间运行的过程中刷新之前捕获 spring @RefreshScope bean 的值
- javascript - 无法从 hashMap 中读取未定义的属性“长度”
- sbt - 启动 sbt 1.5.0 时获取 NullPointerException
- java - 弹出一个强制窗口,用户只能通过 Java Swing 与之交互
- sql - 如何选择两列由另一表中的一列连接的行?
- rust - 如何在 rust 中添加到大型 [u8] 变量的末尾?
- python - Python - 在删除时提取数据和拆分\n