2017-01-25 6 views
0

Ich benutze MongoDB, um verschiedene Arten von Objekten zu speichern, alles ist in einer Sammlung, alle Objekte entsprechen einem ähnlichen Typ. Felder sind für jeden Objekttyp benutzerdefiniert. Feldtyp Werte können Text, Integer oder Float sein.MongoDB füge einen Index für unbekannte Felder hinzu

{ 
    objectTypeId: x, 
    fields: [ 
     { fieldTypeId: "x1", fieldName: "fieldX1", fieldValue: "x1" }, 
     { fieldTypeId: "x2", fieldName: "fieldX2", fieldValue: "x2" } 
    ] 
} 

{ 
    objectTypeId: y, 
    fields: [ 
     { fieldTypeId: "y1", fieldName: "fieldY1", fieldValue: "y1" }, 
     { fieldTypeId: "y2", fieldName: "fieldY2", fieldValue: "y2" } 
    ] 
} 

Gibt es einen Weg, um einen generischen Index hinzuzufügen, wie würde Index alle etwas meine Felddaten:

db.records.createIndex({ fields.fieldName: field.fieldValue }); 

Antwort

0

Sie Index erstellen können db.records.createIndex({ fieldName:1, fieldValue:1 }); verwenden Sie den Index auf das Feld angeben, nicht zu der Wert.

+0

Es muss anders herum sein: '{fieldValue: 1, fieldName: 1}'. Wenn ich die Frage bekomme, möchte OP einen Index von fieldName für Elemente von Feldern haben, wo zB fieldValue = "y2" ist. –

+0

@AlexBlex, was ist der Unterschied zwischen '{fieldValue: 1, fieldName: 1}' und '{fieldName: 1, fieldValue: 1}'? –

+0

Entschuldigung, mein Schlechter. Die Frage ist, mit fieldValue zu indizieren, wo fieldName = "fieldY1". Der Unterschied liegt im Sortier-Präfix: https://docs.mongodb.com/manual/tutorial/sort-results-with-indexes/#use-indexes-to-sort-query-results –

Verwandte Themen