Usando mongodb y mongoose en un proyecto node.js y me preguntaba si tengo que asegurar el índice en los campos _id de los elementos incrustados.
Es decir, veo que mongodb crea automáticamente un índice en los campos _id de las colecciones, ¿también hace lo mismo para los campos _id de las colecciones incrustadas?
{ _id: "joe", name: "Joe Bookreader", addresses: [ { _id: "someid1", street: "123 Fake Street", city: "Faketon", state: "MA", zip: "12345" }, { _id: "someid2", street: "1 Some Other Street", city: "Boston", state: "MA", zip: "12345" } ] }Mi instinto fue no, así que lo probé:
> db.foo.find() > db.foo.getIndexes() [ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "foo.foo" } ] > db.foo.insert({ ... _id: "joe", ... name: "Joe Bookreader", ... addresses: [ ... { ... _id: "someid1", ... street: "123 Fake Street", ... city: "Faketon", ... state: "MA", ... zip: "12345" ... }, ... { ... _id: "someid2", ... street: "1 Some Other Street", ... city: "Boston", ... state: "MA", ... zip: "12345" ... } ... ] ... }) WriteResult({ "nInserted" : 1 }) > db.foo.getIndexes() [ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "foo.foo" } ] >Parece que no, no crea automáticamente índices en subdocumentos.
De la documentación de MongoDB:
By default, MongoDB creates a unique index on the _id field during the creation of a collection.Sí, según la documentación, mongo dB crea un índice único en el campo _id. Índice _id predeterminado