Erstellen von Mehrfeldindizes in Mongoose / MongoDB


93

Ich versuche vergeblich, eine Dokumentation zum Erstellen von Mehrfeldindizes in Mongoosejs zu finden. Insbesondere habe ich zwei Felder, die indiziert und eindeutig sein müssen. Was ist ein Beispiel für ein Mungoschema, das zwei Felder zusammen indiziert?

Antworten:


193

Sie rufen die indexMethode für Ihr SchemaObjekt auf, um dies wie hier gezeigt zu tun . Für Ihren Fall wäre es so etwas wie:

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

2
Dies wird in Mongodb als Compount Index bezeichnet. Es werden also Indizes wie Feld1 und Feld1 + Feld2 erstellt. Es ist also zuerst ein Index gemäß Feld1 und dann innerhalb von Feld1 in Bezug auf Feld 2
Ketan Ghumatkar

1
Was bedeutet die 1 nach Feld1: und Feld2 :?
Damon Yuan

8
@DamonYuan Sie legen die Sortierreihenfolge der Felder im Index fest. 1steigt auf, -1würde absteigen.
JohnnyHK

1
@KetanGhumatkar Es basiert auf der Reihenfolge, in der die Felder im Objekt des Aufrufs an aufgelistet sind index.
JohnnyHK

2
1und -1 gibt einen aufsteigenden oder einen absteigenden Indexschlüssel im Indexfeld an. Ich fand Dokumente http://mongodb.github.io/node-mongodb-native/2.1/tutorials/create-indexes/
Thai Ha


0

Übrigens ist die akzeptierte Antwort falsch. Gemäß https://stackoverflow.com/a/52553550/129300 sollten Sie die Feldnamen in einfache Anführungszeichen setzen, dh:

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

Glücklicher Tag!


Objektschlüssel in JS können nicht in Anführungszeichen gesetzt werden, solange sie syntaktisch gültige Bezeichner sind. field1und field2sind gültige Bezeichner. field1.fooist zum Beispiel nicht.
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"
   ..
   ..

  }
}

Ich habe mit Beispieldaten getestet, dass es wie erwartet perfekt funktioniert.


Wir wollen das nicht mit der Mungoschale, wir wollen das mit dem Knoten js Schema
Rohit Nishad
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.