Существует ли $:false использует индекс?
У нас есть следующий вариант использования: по причинам протокола мы не удаляем удаленные или обновленные записи из базы данных. Мы $set
их deleted
поле для даты / времени, когда они были обновлены / удалены и создать новую запись (если обновляется). Таким образом, все "текущие" записи не имеют deleted
field". Все индексы на текущих записях выглядят так:
{
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
поле?
Спасибо за любую подсказку.