Может ли MongoDB использовать индекс при проверке наличия поля с помощью оператора $ exists?

Если у меня есть данные в моей коллекции users , которые выглядят так:

{ name: '...', 
  email: '...', 
  ...,
  photos: {
     123: { url: '...', title: '...', ... },
     456: { url: '...', title: '...', ... },
     ...
  }
} 

И я хочу найти, какие У пользователя есть идентификатор фотографии 127, тогда я использую запрос:

db.users.find( {'photos.127': {'$exists' => true} } );

Я пробовал, но не представляется возможным заставить MongoDB использовать индекс для этого запроса. Я попробовал использовать следующий индекс: db.users.ensureIndex ({photos: 1}); . И когда я использовал объяснять () , mongo сказал мне, что используется BasicCursor (т.е. индекс не использовался).

Можно ли создать индекс, который mongo будет использовать для этого запроса?

16
задан bantic 18 November 2011 в 00:29
поделиться