Wir verwalten derzeit eine Reihe von Berechtigungen als eine Karte für eine Sammlung. Jeder Berechtigungssatz wird mit der Benutzer-ID als Schlüssel abgelegt. Aus irgendeinem Grund ist dieser Schlüssel derzeit eine stringifizierte Version einer BSONObjectID.Wie erstellt man einen MongoDb-Index für Schlüsselname in Map [Schlüssel, Wert]?
Ich möchte einen Index für die Schlüssel erhalten, so kann ich nur die entsprechende Menge von Berechtigungen Nachschlag, und auch diese Dokumente finden, wo Berechtigungen für bestimmte Benutzer vorhanden ist.
edit: Beispiel hinzugefügt:
Beispiel:
{ "_id": { "$ oid": "xxxxxx"},
"irrelevantData": "Document1 Daten ...",
" Berechtigungen ": {
"key1": { "recht1": true "PERM2: false},
"key3": {" recht1" : true "PERM2: false}
}
{" _id" : {"$ oid": "yyyyyy"},
"irrelevanteDaten": "Documen t2 Daten ... "
"Berechtigungen": {
"key1": {" recht1" : false, "PERM2: true},
"key2": {" recht1" : true „PERM2: false }
}
im obigen Beispiel würde ich meine Dokumente indizieren zu holen sein mag in der Lage nur dann, wenn „key2“ in Berechtigungen vorhanden ist.
Das Modell ist wie folgt:
case class relevantCollection( _id: BSONObjectID, irrelevantData: String, permissions: Option[Map[String, Map[String, Boolean]]])
Wie erstelle ich einen Index auf einem Schlüssel anstelle eines Wertes? Gibt es ein Leistungsproblem in Bezug auf diesen Schlüssel, der ein String vs. ein BSONObjectID ist?
Bevor die Frage, wie es mit ReactiveMongo zu tun, würde ich die [MongoDB Index doc] (https://docs.mongodb.com/manual/indexes/) überprüfen und die MongoShell versuchen. – cchantep
@cchanstep: Ich habe das [MongoDB-Index-Dokument] (https://docs.mongodb.com/manual/indexes/) überprüft, habe aber nichts gefunden, wie man einen Schlüssel indexiert. Vielleicht lese ich es falsch? Wenn ich nur eine funktionierende Lösung für die MongoShell finden konnte, wie Sie vorschlagen, würde ich mich freuen :) – RastacraZ
Also, wenn Sie nicht über eine Art und Weise in der Dokumentation MongoDB finden, gibt es keine Möglichkeit, es mit jeder Client-Bibliothek zu tun. – cchantep