我们如何实施"不喜欢"使用多行搜索的mongodb中没有$

时间:2016-10-15 12:47:23

标签: php json regex mongodb

下面的查询在整个句子中可以正常使用。

 db.candidate.find( {
 $and : [
 { permanent_address: { $not:  /kendriya/ } } ,
 { current_address: { $not:  /India/ } } 
 ]
 }

但问题是 我有一个下面的数组

 Array 
 (
   [$and] => Array
    (
        [0] => Array
            (
                [permanent_address] => Array
                    (
                        [$not] => /kendriya/
                    )

            )
        [1] => Array
            (
                [current_address] => Array
                    (
                        [$not] => /India/
                    )

            )
            )
            )

当我对其进行编码以将其传递给mongo db以获得结果时,json将会更改  作为

$and : 
 [
 { permanent_address: { $not: "/kendriya/" } } ,
 { current_address: { $not:  "/India/" } } 
 ]
 }
 ]

生成json字符串将引用为什么结果不会这样 我们如何才能解决这个问题。

1 个答案:

答案 0 :(得分:2)

创建mongodb正则表达式变量,然后在查询中传递这些变量。

$paddress = new MongoRegex("/kendriya/");
$caddress = new MongoRegex("/India/");

Array 
 (
   [$and] => Array
    (
        [0] => Array
            (
                [permanent_address] => Array
                    (
                        [$not] => $paddress
                    )

            )
        [1] => Array
            (
                [current_address] => Array
                    (
                        [$not] => $caddress
                    )

            )
            )
            )

或者您可以使用它来创建正则表达式

$ paddress = new MongoDB \ BSON \ Regex(' / kendriya /');

如此处所述http://php.net/manual/en/class.mongodb-bson-regex.php