Home >Backend Development >PHP Tutorial >MongoDB PHP查询多维数组实现方法?

MongoDB PHP查询多维数组实现方法?

WBOY
WBOYOriginal
2016-06-06 20:49:331245browse

最近在学习Mongdb,数据结构如下,从豆瓣API拿到的数据:

在mongod里 find('{"casts.name":"杨幂"}') 是可以查询到结果的。 但是用PHP怎么都实现不了查询 2维以上多维数组里的值,求详解。

<code>(
    [_id] => MongoId Object
        (
            [$id] => 52064a30f8c07620bad63af4
        )

    [rating] => Array
        (
            [max] => 10
            [average] => 4.8
            [stars] => 25
            [min] => 0
        )

    [reviews_count] => 313
    [wish_count] => 6308
    [collect_count] => 21907
    [douban_site] => 
    [year] => 2013
    [images] => Array
        (
            [small] => http://img3.douban.com/view/photo/icon/public/p2060736910.jpg
            [large] => http://img3.douban.com/view/movie_poster_cover/lpst/public/p2060736910.jpg
            [medium] => http://img3.douban.com/view/movie_poster_cover/spst/public/p2060736910.jpg
        )

    [alt] => http://movie.douban.com/subject/24721493/
    [id] => 24721493
    [mobile_url] => http://movie.douban.com/subject/24721493/mobile
    [title] => 小时代2:青木时代
    [do_count] => 
    [seasons_count] => 
    [schedule_url] => http://movie.douban.com/subject/24721493/cinema/
    [episodes_count] => 
    [genres] => Array
        (
            [0] => 剧情
            [1] => 喜剧
            [2] => 爱情
        )

    [countries] => Array
        (
            [0] => 中国大陆
            [1] => 台湾
        )

    [casts] => Array
        (
            [0] => Array
                (
                    [avatars] => Array
                        (
                            [small] => http://img4.douban.com/img/celebrity/small/23698.jpg
                            [large] => http://img4.douban.com/img/celebrity/large/23698.jpg
                            [medium] => http://img4.douban.com/img/celebrity/medium/23698.jpg
                        )

                    [alt] => http://movie.douban.com/celebrity/1052359/
                    [id] => 1052359
                    [name] => 杨幂
                )

            [1] => Array
                (
                    [avatars] => Array
                        (
                            [small] => http://img3.douban.com/img/celebrity/small/39610.jpg
                            [large] => http://img3.douban.com/img/celebrity/large/39610.jpg
                            [medium] => http://img3.douban.com/img/celebrity/medium/39610.jpg
                        )

                    [alt] => http://movie.douban.com/celebrity/1315611/
                    [id] => 1315611
                    [name] => 柯震东
                )

            [2] => Array
                (
                    [avatars] => Array
                        (
                            [small] => http://img3.douban.com/img/celebrity/small/44400.jpg
                            [large] => http://img3.douban.com/img/celebrity/large/44400.jpg
                            [medium] => http://img3.douban.com/img/celebrity/medium/44400.jpg
                        )

                    [alt] => http://movie.douban.com/celebrity/1274814/
                    [id] => 1274814
                    [name] => 郭采洁
                )

            [3] => Array
                (
                    [avatars] => Array
                        (
                            [small] => http://img3.douban.com/img/celebrity/small/1372773609.01.jpg
                            [large] => http://img3.douban.com/img/celebrity/large/1372773609.01.jpg
                            [medium] => http://img3.douban.com/img/celebrity/medium/1372773609.01.jpg
                        )

                    [alt] => http://movie.douban.com/celebrity/1274684/
                    [id] => 1274684
                    [name] => 凤小岳
                )

        )

    [current_season] => 
    [original_title] => 小时代2:青木时代
    [summary] => 日子一天一天的过去,林萧(杨幂 饰)、顾里(郭采洁 饰)、南湘(郭碧婷 饰)、唐宛如(谢依霖 饰)四人也迎来了大学毕业这一天,正当所有人都在为毕业之后做着规划的时候,顾里却开始着手自己的生日宴会。这本是一年一度朋友圈里最大的大事,却没想到成为顾里最不愿回想起的记忆,与此同时顾里的家庭发生了重大的变故,她也遭受到了成长以来最大的打击。而林萧、唐宛如、南湘的生活也随着大学生活的结束变得不再平稳。生活相继发生着种种让她们措手不及、不知如何面对、需要抉择的事情。姐妹四人在面对家庭、事业、爱情和友情的巨大转变下,能否依然坚持自己的生活态度?能否坚守住自己的幸福?
    [subtype] => movie
    [directors] => Array
        (
            [0] => Array
                (
                    [avatars] => Array
                        (
                            [small] => http://img4.douban.com/img/celebrity/small/1372241745.58.jpg
                            [large] => http://img4.douban.com/img/celebrity/large/1372241745.58.jpg
                            [medium] => http://img4.douban.com/img/celebrity/medium/1372241745.58.jpg
                        )

                    [alt] => http://movie.douban.com/celebrity/1313751/
                    [id] => 1313751
                    [name] => 郭敬明
                )

        )

    [comments_count] => 11932
    [ratings_count] => 20070
    [aka] => Array
        (
            [0] => 小时代2
            [1] => Tiny Times 2.0
        )

)

</code>

回复内容:

最近在学习Mongdb,数据结构如下,从豆瓣API拿到的数据:

在mongod里 find('{"casts.name":"杨幂"}') 是可以查询到结果的。 但是用PHP怎么都实现不了查询 2维以上多维数组里的值,求详解。

<code>(
    [_id] => MongoId Object
        (
            [$id] => 52064a30f8c07620bad63af4
        )

    [rating] => Array
        (
            [max] => 10
            [average] => 4.8
            [stars] => 25
            [min] => 0
        )

    [reviews_count] => 313
    [wish_count] => 6308
    [collect_count] => 21907
    [douban_site] => 
    [year] => 2013
    [images] => Array
        (
            [small] => http://img3.douban.com/view/photo/icon/public/p2060736910.jpg
            [large] => http://img3.douban.com/view/movie_poster_cover/lpst/public/p2060736910.jpg
            [medium] => http://img3.douban.com/view/movie_poster_cover/spst/public/p2060736910.jpg
        )

    [alt] => http://movie.douban.com/subject/24721493/
    [id] => 24721493
    [mobile_url] => http://movie.douban.com/subject/24721493/mobile
    [title] => 小时代2:青木时代
    [do_count] => 
    [seasons_count] => 
    [schedule_url] => http://movie.douban.com/subject/24721493/cinema/
    [episodes_count] => 
    [genres] => Array
        (
            [0] => 剧情
            [1] => 喜剧
            [2] => 爱情
        )

    [countries] => Array
        (
            [0] => 中国大陆
            [1] => 台湾
        )

    [casts] => Array
        (
            [0] => Array
                (
                    [avatars] => Array
                        (
                            [small] => http://img4.douban.com/img/celebrity/small/23698.jpg
                            [large] => http://img4.douban.com/img/celebrity/large/23698.jpg
                            [medium] => http://img4.douban.com/img/celebrity/medium/23698.jpg
                        )

                    [alt] => http://movie.douban.com/celebrity/1052359/
                    [id] => 1052359
                    [name] => 杨幂
                )

            [1] => Array
                (
                    [avatars] => Array
                        (
                            [small] => http://img3.douban.com/img/celebrity/small/39610.jpg
                            [large] => http://img3.douban.com/img/celebrity/large/39610.jpg
                            [medium] => http://img3.douban.com/img/celebrity/medium/39610.jpg
                        )

                    [alt] => http://movie.douban.com/celebrity/1315611/
                    [id] => 1315611
                    [name] => 柯震东
                )

            [2] => Array
                (
                    [avatars] => Array
                        (
                            [small] => http://img3.douban.com/img/celebrity/small/44400.jpg
                            [large] => http://img3.douban.com/img/celebrity/large/44400.jpg
                            [medium] => http://img3.douban.com/img/celebrity/medium/44400.jpg
                        )

                    [alt] => http://movie.douban.com/celebrity/1274814/
                    [id] => 1274814
                    [name] => 郭采洁
                )

            [3] => Array
                (
                    [avatars] => Array
                        (
                            [small] => http://img3.douban.com/img/celebrity/small/1372773609.01.jpg
                            [large] => http://img3.douban.com/img/celebrity/large/1372773609.01.jpg
                            [medium] => http://img3.douban.com/img/celebrity/medium/1372773609.01.jpg
                        )

                    [alt] => http://movie.douban.com/celebrity/1274684/
                    [id] => 1274684
                    [name] => 凤小岳
                )

        )

    [current_season] => 
    [original_title] => 小时代2:青木时代
    [summary] => 日子一天一天的过去,林萧(杨幂 饰)、顾里(郭采洁 饰)、南湘(郭碧婷 饰)、唐宛如(谢依霖 饰)四人也迎来了大学毕业这一天,正当所有人都在为毕业之后做着规划的时候,顾里却开始着手自己的生日宴会。这本是一年一度朋友圈里最大的大事,却没想到成为顾里最不愿回想起的记忆,与此同时顾里的家庭发生了重大的变故,她也遭受到了成长以来最大的打击。而林萧、唐宛如、南湘的生活也随着大学生活的结束变得不再平稳。生活相继发生着种种让她们措手不及、不知如何面对、需要抉择的事情。姐妹四人在面对家庭、事业、爱情和友情的巨大转变下,能否依然坚持自己的生活态度?能否坚守住自己的幸福?
    [subtype] => movie
    [directors] => Array
        (
            [0] => Array
                (
                    [avatars] => Array
                        (
                            [small] => http://img4.douban.com/img/celebrity/small/1372241745.58.jpg
                            [large] => http://img4.douban.com/img/celebrity/large/1372241745.58.jpg
                            [medium] => http://img4.douban.com/img/celebrity/medium/1372241745.58.jpg
                        )

                    [alt] => http://movie.douban.com/celebrity/1313751/
                    [id] => 1313751
                    [name] => 郭敬明
                )

        )

    [comments_count] => 11932
    [ratings_count] => 20070
    [aka] => Array
        (
            [0] => 小时代2
            [1] => Tiny Times 2.0
        )

)

</code>

你的多维的查询条件是什么

<code class="lang-php">// 测试这样ok
$rows = $mongo->test->test->find(array(
    'casts.name' => array('$in'=> array('杨幂','刘恺威'))
));
foreach ($rows as $row) {
    echo "{$row['title']}<br>";
}
</code>

请自己查一下 $elemMatch 在mongo中的用法。
是专门解决你这个问题的.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn