2017-02-22 20 views
0

私はこの次のコードを使用して、ドキュメントのサブドキュメントのプロパティを使用して検索したい:mongodbの文書のサブ文書を検索しますか?

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); 
}); 

それは私にこのエラーを与える:

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

私はそこに任意の作業コードを見つけることができません。誰にでも助言しますか?

+0

検索する通常の文字列の下に言及してみてくださいコード.. – Rendy

+0

、および$テキストはテキストインデックスのために働くbcozあなたは、コレクションにテキストインデックスを作成しました。 –

+0

ええ、私はそれらのすべてをやった。 – Rendy

答えて

0

インデックスはパイプラインの最初の段階でのみ使用されるため、$ unwindの後にはregexを使用して検索する必要があります。

文書の構造は何

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

それはあなたがサンプル文書構造としたい所望の出力を共有することができる場合、私はその後、私のPC上でそれをチェックして、あなたのソリューションを与えることができます – Rendy

+0

..私に空の配列を返します。 –

関連する問題