【问题标题】:Find substring in MongoDB array from another array from PHP从 PHP 的另一个数组中查找 MongoDB 数组中的子字符串
【发布时间】:2013-12-20 11:38:14
【问题描述】:

我在 Mongo 中保存了一个更复杂的文档“模式”,但我需要匹配的部分看起来像这样

"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'
            )
        );

【问题讨论】:

    标签: php regex arrays mongodb find


    【解决方案1】:

    我通过首先创建一个使用 MongoRegex 搜索标签的数组并将这个数组添加到 $or 过程来解决这个问题

            $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'
                )
            );
    

    【讨论】:

      猜你喜欢
      • 2016-08-10
      • 2020-04-15
      • 2015-05-01
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      相关资源
      最近更新 更多