【问题标题】:Mongoid: How do I limit a collection to one entry?Mongoid:如何将集合限制为一个条目?
【发布时间】:2020-01-12 11:31:23
【问题描述】:

问题::
有没有办法将一个表限制为一个条目?
我想从模型中执行此操作,因此只能创建和修改一个条目。目前我只允许修改 Object.first 条目。我也愿意听取更好的做法。提前致谢


背景::
我是 Mongo 的新手,我发现的唯一信息是创建一个新集合。

使用 Mongo DB,您可以使用 Capped Collections 进行限制。
Set limits on mongo db collection

“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-rails mongodb mongoid


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多