Creación de índices de campos múltiples en Mongoose / MongoDB

93

Estoy tratando de encontrar documentación, en vano, sobre cómo crear índices de campos múltiples en Mongoosejs. En particular, tengo dos campos que deben indexarse ​​y ser únicos. ¿Cuál es un ejemplo de esquema de mangosta que indexa dos campos juntos?

Dan
fuente

Respuestas:

196

Llamas al indexmétodo en tu Schemaobjeto para hacer eso como se muestra aquí . Para tu caso sería algo como:

mySchema.index({field1: 1, field2: 1}, {unique: true});
JohnnyHK
fuente
2
Esto se denomina índice compuesto en mongodb. Entonces crea índices como field1 y field1 + field2. Por lo tanto, primero se indexa según el campo1 y luego dentro del campo1 con respecto al campo 2
Ketan Ghumatkar
1
¿Cuál es el significado del 1 después de field1: y field2:?
Damon Yuan
9
@DamonYuan Ellos establecen el orden de clasificación de los campos en el índice. 1está ascendiendo, -1estaría descendiendo.
JohnnyHK
1
@KetanGhumatkar Se basa en el orden en que se enumeran los campos en el objeto en la llamada a index.
JohnnyHK
2
1y -1 especifica una clave de índice ascendente o descendente en el campo de índice. Encontré documentos http://mongodb.github.io/node-mongodb-native/2.1/tutorials/create-indexes/
Thai Ha
0

Por cierto, la respuesta aceptada es incorrecta, según https://stackoverflow.com/a/52553550/129300 debe envolver los nombres de los campos entre comillas simples, es decir:

mySchema.index({'field1': 1, 'field2': 1}, {unique: true});

¡Día feliz!

Fer Martín
fuente
Las claves de objeto en JS pueden estar sin comillas siempre que sean identificadores sintácticamente válidos. field1y field2son identificadores válidos. field1.foono lo es, por ejemplo.
Gus
-3
    Following command can be used to create compound index for nested json:
    db.ACCOUNT_collection.createIndex({"account.id":1,"account.customerId":1},{unique:1}) 
Mongo json structure is like :
{"_id":"648738"
 "account": { 
    "id": "123",
    "customerId": 7879,
    "name": "test"
   ..
   ..

  }
}

He probado con datos de muestra que funciona perfectamente como se esperaba.

Rajeev Rathor
fuente
No queremos eso con el shell de mangostas, queremos eso con el esquema del nodo js
Rohit Nishad