2016-10-20 5 views
0

で複数の条件を持つ私は2条件

  • 最初の条件があります。

    "\"userfullname\":{$regex : \"" + filtertext + "\", $options: 'i'}"; 
    
  • 第二の条件:

    "\"email\":{$regex : \"" + filtertext + "\", $options: 'i'}"; 
    

を私がする必要がありますこのステートメントのOR条件は、私がしたことです:

matchquery = matchquery + "\"userfullname\":{$regex : \"" + filtertext + "\", $options: 'i'}"+["%OR:"]+"\"email\":{$regex : \"" + filtertext + "\", $options: 'i'}"; 

でも、もちろん動作しませんでした。どうすればこれを達成できますか?

答えて

0

$orオペレータを使用してください。あなたは、本質的にfiltertextが可変であるなら、あなたはパターンとテキストを照合するための正規表現オブジェクトを作成しますRegExpコンストラクタを使用することができ、フォーム

var matchquery = { 
    '$or': [ 
     { 'userfullname': { '$regex': \filtertext\, '$options': 'i' } }, 
     { 'email': { '$regex': \filtertext\, '$options': 'i' } } 
    ] 
} 

を持つクエリを作成したいです。たとえば:

var filtertext = "foo"; 
var rgx = new RegExp(filtertext, "i"); 
var matchquery = { 
    "$or": [ 
     { "userfullname": rgx }, 
     { "email": rgx } 
    ] 
}; 

クエリを文字列化するために、あなたは試みることができる:

var filtertext = "foo"; 
var rgx = new RegExp(filtertext, "i"); 
var matchquery = '{ "$or":[{ "userfullname": {"$regex": '+ rgx.toString() +'} },{ "email":{ "$regex": '+ rgx.toString() + '} }] } }'; 
0

Orオペレータ&はこのようにそれを作成し使用してください:

var condition1 = 
"\"userfullname\":{$regex : \"" + filtertext + "\", $options: 'i'}"; 

var condition2 = "\"email\":{$regex : \"" + filtertext + "\", $options: 'i'}"; 


var matchquery = "{ \"$or\" : [ " + condition1 + "," + condition2 +" ]}" 
+0

こんにちははあなたのコードをitriedが、それは次のように表示しますエラー –

+0

こんにちは、私はあなたのコードを試みたが、それは次のエラーを表示するJSONリーダーは ':'が期待していたが、 '$または'が見つかりました。 –

+0

それは動作するはずです。あなたのマッチクエリーに追加されている何か他に何かありますか? –

関連する問題