我希望做一个非常常见的任务,即永远不要删除我存储的项目,而只是用删除的标记标记它们。但是,对于几乎所有请求,我现在必须指定deleted:false
。有没有办法让你可以添加一个“默认”过滤器?这样我可以构建一个live_items
过滤器并在其上进行查询?
这只是对潜在答案的猜测。一般来说,我只想让deleted=False
成为默认搜索。
谢谢!
答案 0 :(得分:0)
在SQL中,您可以使用视图执行此操作,但遗憾的是MongoDB不支持视图。
但是,当排除标记为已删除的项目的查询比包含它们的项目更频繁时,您可以从主items
集合中删除已删除的项目,并将它们放在单独的items_deleted
中采集。这也具有很好的副作用,即活动项目集合的性能不会受到大量已删除项目的影响。缺点是指数不能保证在两个集合中都是唯一的。
答案 1 :(得分: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)