Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Mongodb find()未按预期工作_Php_Mongodb_Find - Fatal编程技术网

PHP Mongodb find()未按预期工作

PHP Mongodb find()未按预期工作,php,mongodb,find,Php,Mongodb,Find,我得到了一个非常基本的Mongodb查找请求,它似乎不起作用。PHP7+ 我想要SQL中的类似内容:where'common'像%Burk% 简单的查询是调用国家集合并生成布基纳法索作为输出 问题1: $countries_tb= $db->selectCollection('country_city_data'); $countries = $countries_tb->find([],[ 'common' => new MongoDB\BSON\Regex('B

我得到了一个非常基本的Mongodb查找请求,它似乎不起作用。PHP7+ 我想要SQL中的类似内容:
where'common'像%Burk%

简单的查询是调用
国家集合
并生成布基纳法索作为输出

问题1:

$countries_tb= $db->selectCollection('country_city_data');
 $countries = $countries_tb->find([],[
    'common' => new MongoDB\BSON\Regex('Burk')]);
var_dump($countries);
var\u dump
打印数据库中的所有内容

问题2:

当我找到(没有空的[])时,它不会转储任何必要的内容

 $countries = $countries_tb->find(/*without the []*/ [
    'common' => new MongoDB\BSON\Regex('Burk')]);

var_dump($countries);
我明白了:

我也尝试过这种格式

问题3:

 $countries = $countries_tb->find(
                     array('name'=>
 array(  'common'=>new MongoDB\BSON\Regex('Burk'))));

                var_dump($countries);
仍然没有成功

按照下面的
@noobProgrammer
建议,这样做:

产生这个

而不是“布基纳法索”这个词


仍然没有成功

所有筛选器都应位于第一个数组参数中

$countries\u tb->find(['area'=>272967,'capital'=>瓦加杜古],
选择权)

第二个参数用于选项。您应该将typeMap作为选项传递,以将对象转换为数组


$options=['typeMap'=>['root'=>'array','document'=>'array']]

我终于成功了

这就是我所做的

$countries = $countries_tb->find(array('name.common' =>   array('$regex' =>  'Burk') ) );
注意
name.common中的

这是我的
foreach
loop'

foreach( $countries as $country => $name) { 

   foreach ($name as $n){

       if(isset($n->common)){

            var_dump($n->common);

        }

   }
}

//It prints out:    country_cities.php:90:string 'Burkina Faso' (length=12)

不知何故,这是行不通的

$countries = $countries_tb->find(
                         array('name'=>
                                 array('common' =>   
                                         array('$regex' =>   'Burk')) ) );
这是JSON的
这很有趣,因为我想在SQL中找到类似的东西:
其中的'common'类似于%Burk%
,对于这样一个简单的
查询
结果仍然相同的人来说,
mongodb
方法似乎非常复杂,请检查我上面的编辑。。。。真的用尽了我所有的资源,还是一无所获works@ErickBest,实际查看输出的内容。你能详细解释一下结果吗?我想让它输出单词“布基纳法索”
。。。。我想象这是我们在
SQL
中所做的事情,其中的“common”如%Burk%
我有一个foreach循环,但它不会产生预期的结果
$countries = $countries_tb->find(
                         array('name'=>
                                 array('common' =>   
                                         array('$regex' =>   'Burk')) ) );
{"_id":"55a0f42f20a4d760b5fc306d","altSpellings":["BF"],"area":272967,"borders":["BEN","CIV","GHA","MLI","NER","TGO"],"callingCode":["226"],"capital":"Ouagadougou","cca2":"BF","cca3":"BFA","ccn3":"854","cioc":"BUR","currency":["XOF"],"demonym":"Burkinabe","landlocked":true,"languages":{"fra":"French"},"latlng":[13,-2],"name":{"common":"Burkina Faso","native":{"fra":{"common":"Burkina Faso","official":"Burkina Faso"}},"official":"Burkina Faso"},"region":"Africa","subregion":"Western Africa","tld":[".bf"],"translations":{"cym":{"common":"Burkina Faso","official":"Burkina Faso"},"deu":{"common":"Burkina Faso","official":"Burkina Faso"},"fin":{"common":"Burkina Faso","official":"Burkina Faso"},"fra":{"common":"Burkina Faso","official":"Burkina Faso"},"hrv":{"common":"Burkina Faso","official":"Burkina Faso"},"ita":{"common":"Burkina Faso","official":"Burkina Faso"},"jpn":{"common":"ブルキナファソ","official":"ブルキナファソ"},"nld":{"common":"Burkina Faso","official":"Burkina Faso"},"por":{"common":"Burkina Faso","official":"Burkina Faso"},"rus":{"common":"Буркина-Фасо","official":"Буркина -Фасо"},"spa":{"common":"Burkina Faso","official":"Burkina Faso"}}}