2017-02-22 2 views
0

Ich möchte mit diesem folgenden Code Subdokument Eigentum von Dokumenten suchen:Unterdokument des Dokuments in Mongodb suchen?

Model.UserRole.aggregate(
[ 
    { 
     $match : { 
      status : { $in : ["inactive"] }, 
     } 
    }, 
    { 
     $lookup : { 
      from: "users", 
      localField: "user", 
      foreignField: "_id", 
      as: "user" 
     } 
    }, 
    { 
     $unwind : "$user" 
    }, 
    { 
     $match : { "user.name" : { $text: { $search: keyword } } } 
    } 
], function(err, result) { 
    callback(null, result); 
}); 

Es gibt mir diese Fehlermeldung:

UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): MongoError: bad query: BadValue: unknown operator: $text

ich keinen funktionierenden Code da draußen gibt. Irgendwelche beraten jeden?

+0

Eine normale Zeichenfolge gesucht werden .. – Rendy

+0

Was die Struktur des Dokuments ist, und erstellt haben Sie Textindex für Sammlung, bcoz $ text für Textindex funktioniert. –

+0

Ja, ich habe alle von ihnen gemacht .. – Rendy

Antwort

0

Sie sollten regex für die Suche nach $ unwind verwenden, da Indizes nur in der ersten Stufe der Pipeline verwendet werden.

Try Code unten erwähnt

Model.UserRole.aggregate(
[ 
    { 
     $match : { 
      status : { $in : ["inactive"] }, 
     } 
    }, 
    { 
     $lookup : { 
      from: "users", 
      localField: "user", 
      foreignField: "_id", 
      as: "user" 
     } 
    }, 
    { 
     $unwind : "$user" 
    }, 
    { 
     $match : { "user.name" : new RegExp(keyword, 'i') } 
    } 
], function(err, result) { 
    callback(null, result); 
}); 
+0

Es gibt mir leere Array .. – Rendy

+0

Wenn Sie eine Beispieldokumentstruktur und gewünschte Ausgabe teilen können, die Sie wollen, kann ich es dann auf meinem PC überprüfen und Ihnen Lösung geben –

Verwandte Themen