我在Mongo中保存了一个更复杂的文档“schema”,但我需要匹配的部分看起来像这样
"tags" : [
{
"tag" : "accompong maroon festival",
"type" : "label"
},
{
"tag" : "jamaica",
"type" : "label"
},
{
"tag" : "maroon warrior",
"type" : "label"
},
{
"tag" : "maroons",
"type" : "label"
},
{
"tag" : "caribbean culture",
"type" : "label"
},
{
"tag" : "rum",
"type" : "label"
}
}
我使用PHP查询Mongo数据库,我必须根据可能的单词数组查询每个文档。
array(
'boxing',
'warrior'
)
我不知道如何编写代码以便尝试将我拥有的数组与Mongo中保存的数据集进行匹配。 现在我只是试着看看标签是否在单词数组
中$data = $this->event_model->find_by(
array
(
'tags.tag' => array
(
'$in' => $Words
),
'published' => 'y'
)
);
答案 0 :(得分:0)
我通过首先创建一个使用MongoRegex搜索标记并将此数组添加到$或过程
的数组来解决这个问题 $or_array = array();
foreach($Words as $w)
{
$or_array[] = array(
'tags.tag' => new MongoRegex('/.*'. $w .'.*/i')
);
}
$data = $this->event_model->find_by(
array
(
'$or' => $or_array,
'published' => 'y'
)
);