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?

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});

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!


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.


No queremos eso con el shell de mangostas, queremos eso con el esquema del nodo js
— Rohit Nishad
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.