Creazione di indici multifield in Mongoose / MongoDB


93

Sto cercando di trovare documentazione, inutilmente, su come creare indici multi-campo in Mongoosejs. In particolare ho due campi che devono essere indicizzati e univoci. Qual è un esempio di schema mangusta che indicizza due campi insieme?

Risposte:


196

Chiami il indexmetodo sul tuo Schemaoggetto per farlo come mostrato qui . Per il tuo caso sarebbe qualcosa del tipo:

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

2
Questo è chiamato Compount Index in mongodb. Quindi crea indici come campo1 e campo1 + campo2. Quindi è prima indice in base al campo1 e poi all'interno di campo1 rispetto al campo 2
— Ketan Ghumatkar

1
qual è il significato di 1 dopo field1: e field2:?
— Damon Yuan

9
@DamonYuan Hanno impostato l'ordinamento dei campi nell'indice. 1sta salendo, -1sarebbe discendente.
— JohnnyHK

1
@KetanGhumatkar Si basa sull'ordine in cui i campi sono elencati nell'oggetto nella chiamata a index.
— JohnnyHK

2
1e -1 specifica una chiave di indice crescente o decrescente nel campo dell'indice. Ho trovato i documenti http://mongodb.github.io/node-mongodb-native/2.1/tutorials/create-indexes/
— Thai Ha


0

A proposito, la risposta accettata è sbagliata, come per https://stackoverflow.com/a/52553550/129300 dovresti racchiudere i nomi dei campi tra virgolette singole, ad esempio:

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

Giorno felice!


Le chiavi oggetto in JS possono essere non quotate purché siano identificatori sintatticamente validi. field1e field2sono identificatori validi. field1.foonon lo è, per esempio.
— 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"
   ..
   ..

  }
}

Ho testato con dati di esempio che funziona perfettamente come previsto.


Non lo vogliamo con la shell delle manguste, lo vogliamo con lo schema node js
— Rohit Nishad,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.