2016-08-07 18 views
9

Ich habe folgendes Schema:Mongoose Textindex für verschachteltes Schemafeld

const Schema = ({ 
    metadata: { 
    title: String, 
    ... 
    }, 
    ... 

}); 

und ich suche einen eines Textindex für metadata.title zu erstellen. Ich kann einen Textindex erfolgreich auf jeder Eigenschaft der ersten Ebene erstellen, aber ich habe Probleme mit dem verschachtelten Titel.

Ich habe den folgenden Code vergeblich versucht. Ist meine Syntax falsch? Ich habe kein Glück mit docs hatte ...

Schema.index({ 'metadata.title': 'text' }); 

Searching:

Schema 
    .find(
    { $text : { $search : req.params.query } }, 
    { score : { $meta: "textScore" } }) 
+0

Startete Kopfgeld- aber stellt sich heraus, dass gegenwärtige Antwort das Problem löst. Wird dort Kopfgeld geben. –

+1

Ihr ursprünglicher Versuch von 'Schema.index ({'metadata.title': 'text'});' ist der richtige Weg, dies zu tun und funktioniert gut, wenn ich es versuche. Die derzeit akzeptierte Antwort erstellt nur einen traditionellen Index, keinen Textindex. Die Verwendung von 'Schema' für Ihr Schema (und Ihr Modell) ist ein wenig verwirrend, da Sie diesen Bezeichnernamen wirklich als' Schema'-Konstruktor behalten sollten. – JohnnyHK

+0

Ja, es heißt in meinem Code etwas anderes, ich habe Schema hier nur als Platzhalter benutzt ... sorry. Und ja, tatsächlich funktioniert mein ursprünglicher Versuch so, wie du gesagt hast ... Wem schenk ich das Kopfgeld zu? –

Antwort

2

Es stellt sich heraus, was ich hatte ursprünglich war richtig, wie erwähnt durch @JohnnyHK. Ich muss einen anderen Fehler gehabt haben, der verursachte, dass der Index nicht funktioniert ...

0

const Schema = ({ 
 
    metadata: { 
 
    title: { 
 
     type: String, 
 
     index: true 
 
     } 
 
    ... 
 
    }, 
 
    ... 
 

 
});

+0

Hm ... Mungo scheint einen Fehler zu machen, wenn ich das tue. 'TypeError: Undefinierter Typ undefiniert unter metadata.index' –

+1

Entschuldigung. Meine Antwort wurde korrigiert. –

+0

Hm. Funktioniert immer noch nicht, zumindest nicht bei meiner Suche. Ich habe hinzugefügt, wie ich suche, können Sie sicherstellen, dass es noch zusammenpasst? –