Kann MongoDB verwenden Sie einen index, wenn die überprüfung auf die Existenz eines Feldes mit $exists-operator?

Wenn ich Daten in meine users Sammlung, die so aussieht wie:

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

Und ich möchte, um herauszufinden, welcher Benutzer besitzt die Foto-id 127 ist, dann bin ich mit der Abfrage:

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

Hab ich versucht, aber es scheint nicht möglich zu bekommen, MongoDB, um einen index für diese Abfrage. Die index, die ich versuchte, war: db.users.ensureIndex({photos:1});. Und wenn ich explain() mongo sagte mir, es war mit einem BasicCursor (d.h., kein index verwendet wurde).

Ist es möglich, einen index zu schaffen, mongo der für diese Abfrage?

InformationsquelleAutor bantic | 2011-11-18

Schreibe einen Kommentar