0

我希望做一个非常常见的任务,即永远不要删除我存储的项目,而只是用已删除的标志标记它们。但是,对于几乎每个请求,我现在都必须指定deleted:false. 有没有办法让你可以添加一个“默认”过滤器?这样我就可以构建一个live_items过滤器并在此基础上进行查询?

这只是对潜在答案的一种猜测。一般来说,我只想deleted=False成为默认搜索。

谢谢!

4

2 回答 2

0

在 SQL 中,您可以使用视图来执行此操作,但不幸的是 MongoDB 不支持视图。

但是,当排除标记为已删除的项目的查询比包含它们的查询频繁得多时,您可以从主items集合中删除已删除的项目并将它们放在单独的items_deleted集合中。这也有一个很好的副作用,即活动项目集合的性能不会受到大量已删除项目的影响。缺点是不能保证索引在两个集合中都是唯一的。

于 2012-12-13T09:22:15.240 回答
0

我继续做了一个结合指定查询的python函数:

def find_items(filt, single=False, live=True):
  if live:
    live = {'deleted': False}
    filt = dict(filt.items() + live.items())
  if single:
    return db.Item.find_one(filt)
  else:
    return db.Item.find(filt)
于 2012-12-13T19:17:03.433 回答