【问题标题】:Limiting documents in MongoDB dynamically动态限制 MongoDB 中的文档
【发布时间】:2015-02-03 17:12:21
【问题描述】:

我希望动态限制集合中的文档数量。例如,我将为 GOLD 会员存储多达 1000 个文档,为 SILVER 会员存储 500 个文档。当特定用户达到最大值并由他们创建新文档时,应删除属于该用户的最旧文档。

上限集合不适合这样的事情,所以我想知道是否由我来添加自己的逻辑来实现这个“队列类型”功能,或者是否有一些久经考验的方法?

【问题讨论】:

标签: mongodb mongoose


【解决方案1】:

使用在每次保存时执行“封顶”的预保存中间件。

schema.pre('save', function(next) {
    model.find({}, {
        sort: { $natural: -1 }, // sort in reverse
        limit: 50,             //  to get last 50 docs
    }).remove();
    next();
});

【讨论】:

  • 这看起来很有趣。不过,我怎样才能为每个用户使用它?
  • 收藏与用户的关系如何?在该集合上执行此操作。
  • 我试图理解这个@laggingreflex 所以这应该找到最后50个文档,或者这是否说 - 检查50个文档,如果有50个删除最后一个?因为这看起来只是删除了最后一个而不检查,还是两者都做?
  • @Lion789 它查找所有文档(作为一个数组),然后对数组进行反向排序,然后只保留 50 个或更少的元素。然后它会删除那些元素(文档)。
猜你喜欢
  • 2012-01-17
  • 2018-03-26
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 2023-03-28
相关资源
最近更新 更多