首页 > 解决方案 > 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)


标签: ruby-on-railsmongodbmongoid

解决方案


根据您要实现的目标,上限集合可能不适合您的用例。在Capped Collection Documentation中,它说:

Capped 集合的工作方式类似于循环缓冲区:一旦集合填满了分配的空间,它就会通过覆盖集合中最旧的文档来为新文档腾出空间。

如果您使用上限集合然后插入一个新文档,它只会覆盖现有文档,而不是引发错误。当然,您可以只插入一个包含更新信息的新文档,而不是覆盖现有文档,但我不确定您是否打算这样做。(如果这有帮助,您可以在设置 MongoDB 实例时通过 Mongo Shell 创建一个上限集合。)

总的来说,听起来在您的应用程序逻辑中执行此规则是可行的方法。我还会花一些时间考虑您是否真的需要将这些信息保存在数据库中——Ruby 单例类或一些环境变量会更适合您的需要吗?


推荐阅读