次の使用例があります: プロトコル上の理由により、削除または更新されたレコードをデータベースから削除しません。$set
それらが更新/削除された日付/時刻にフィールドをdeleted
変更し、新しいレコードを作成します (更新された場合)。したがって、すべての「現在の」レコードにはフィールドがありませんdeleted
」。現在のレコードのすべてのインデックスは次のようになります。
{
field_a: 1,
field_b: 1,
...,
deleted: 1
}
現在のレコードに関するクエリは次のようになります。
find( {
field_a: "...",
field_b: "...",
deleted: { $exists: false}
} )
がインデックスを使用しているかどうかわからないため、現在のすべてのフィールド ( のないフィールド) にフィールドセットを{$exists: false}
追加し、インデックスを次のように変更しました。current
true
deleted
{
field_a: 1,
field_b: 1,
...,
current: 1
}
そして私のクエリ:
find( {
field_a: "...",
field_b: "...",
current: true
} )
後者のケースが本当に優れているかどうか、誰か教えてもらえますか? current
それとも、それらは慎重に実行され、追加のフィールドを割くことができますか?
ヒントをありがとう。