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


How do I find multiple items in a field with mongodb?

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

"tags" : [ [ "narnia" ], [ "aslan" ], [ "winter" ], [ "heaven" ] ]

我需要知道如何通过匹配所有数量的标签来找到这个文档。即纳尼亚和阿斯兰(但不是纳尼亚或阿斯兰)。

查询需要使用PHP进行。

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

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

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

否则,您尝试做的事情可以用$and语句来完成(例如,没有嵌套数组):

PRIMARY> db.wardrobe.find({ $and: [ { tags: "narnia" }, { tags: "tugboat" } ] })
//returns nothing
PRIMARY> db.wardrobe.find({ $and: [ { tags: "narnia" }, { tags: "winter" } ] })
//returns { "_id" : ObjectId("521067a48202463b88c2a0c9"), "tags" : [ "narnia", "aslan", "winter", "heaven" ] }

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