Существует ли $: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 поле?

Спасибо за любую подсказку.

0 ответов

Другие вопросы по тегам