0

保存したアイテムを決して削除せず、代わりに削除済みフラグでマークするという非常に一般的なタスクを実行したいと考えています。ただし、ほぼすべてのリクエストで、指定する必要がありますdeleted:false。追加できる「デフォルト」フィルターを設定する方法はありますか? live_itemsフィルターを作成して、その上でクエリを実行できるようにするには?

これは、潜在的な答えの 1 つの推測にすぎません。deleted=False一般的に、私はデフォルトの検索になりたいだけです。

ありがとう!

4

2 に答える 2

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 に答える
0

SQL ではこれをビューで行いますが、残念ながら MongoDB はビューをサポートしていません。

ただし、削除済みとしてマークされたアイテムを除外するクエリが、それらを含むアイテムよりもはるかに頻繁に発生する場合は、削除済みアイテムをメインitemsコレクションから削除して、別のitems_deletedコレクションに入れることができます。これには、アクティブなアイテムのコレクションのパフォーマンスが、多数の削除されたアイテムによって損なわれないという素晴らしい副作用もあります。欠点は、インデックスが両方のコレクションで一意であることを保証できないことです。

于 2012-12-13T09:22:15.240 に答える