Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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在字段中查找多个项目?_Php_Mongodb - Fatal编程技术网

Php 如何使用mongodb在字段中查找多个项目?

Php 如何使用mongodb在字段中查找多个项目?,php,mongodb,Php,Mongodb,我的Mongo文档中出现了以下类型的事件 "tags" : [ [ "narnia" ], [ "aslan" ], [ "winter" ], [ "heaven" ] ] 我需要知道如何通过匹配任意数量的标签来查找此文档。即纳尼亚和阿斯兰(但不是纳尼亚或阿斯兰) 需要使用PHP进行查询 到目前为止,我只有一个标签的工作。即 $filter['tags'] = array('$in' => array(array('Narnia'))); 正如Hussain在评论中提到的,您可能需要

我的Mongo文档中出现了以下类型的事件

"tags" : [ [ "narnia" ], [ "aslan" ], [ "winter" ], [ "heaven" ] ]
我需要知道如何通过匹配任意数量的标签来查找此文档。即纳尼亚和阿斯兰(但不是纳尼亚或阿斯兰)

需要使用PHP进行查询

到目前为止,我只有一个标签的工作。即

$filter['tags'] = array('$in' => array(array('Narnia')));

正如Hussain在评论中提到的,您可能需要修改文档结构,因为它似乎存储了不必要的数组

否则,您可以使用
$和
语句(例如,不使用嵌套数组)来执行以下操作:

在PHP中:

//With your nested arrays:
$filter = array(
   '$and' => array( 
      array('tags' => array('narnia') ), 
      array('tags' => array('aslan') )
   )
);

//With a simple array:
$filter = array(
   '$and' => array( 
      array('tags' => 'narnia'), 
      array('tags' => 'aslan')
   )
);

$mongoClient->selectCollection('cwlewis', 'wardrobe')->find( $filter );

在数组中使用数组而不仅仅是标记有什么特殊原因:['narnia'、'aslan'、'winter']?我设法用$filter['tags']=array('$in'=>array(array(array('narnia')、array('aslan')))@poembase解决了这个问题,除非你改变了文档结构。。。
//With your nested arrays:
$filter = array(
   '$and' => array( 
      array('tags' => array('narnia') ), 
      array('tags' => array('aslan') )
   )
);

//With a simple array:
$filter = array(
   '$and' => array( 
      array('tags' => 'narnia'), 
      array('tags' => 'aslan')
   )
);

$mongoClient->selectCollection('cwlewis', 'wardrobe')->find( $filter );