find()查询MongoDB for php

时间:2014-05-13 14:22:30

标签: php mongodb

您好我正在使用mongoDb作为我的新项目。我试图从mongodb数据库中找到值。 我的mongoDB数据库集合名称是:test和json格式在

之下
{
"College": [
    {
        "name": "tamy",
        "roll_no": "1"
    },
    {
        "name": "abhi",
        "roll_no": "2"
    },
    {
        "name": "jack",
        "roll_no": "3"
    }
],
"School": [
    {
        "name": "zack",
        "roll_no": "1"
    },
    {
        "name": "mac",
        "roll_no": "2"
    },
    {
        "name": "john",
        "roll_no": "3"
    }
]
}

**我想找到这个名字:来自测试集合的abhi ** 我的mongodb在php中查找查询

 $criteria = array( 
                'College'=> array(
                    'name'=> 'abhi'
   ));
$cursor = $collection->find($criteria);

但它没有返回任何值。 如果我使用print_r在php中显示。

print_r(iterator_to_array($cursor));

显示空数组()

我需要这样的输出: 名称:杰克 roll_no:3

请帮助我..

1 个答案:

答案 0 :(得分:0)

关键"大学"是一个数组,你试图把它当作一个"子文档" (但这不允许存储多个学院)

我想在这里使用elemMatch关键字:http://docs.mongodb.org/manual/reference/operator/query/elemMatch/

编辑:再看一遍之后,我觉得你的结构有点不合适了。有多少"学生"每所大学或学校会有吗?请记住,每个父文档不能超过10mb,当您选择文档时,必须通过连接发回整个文档(除非您使用聚合或map / reduce。我认为您可能希望拥有一个人,然后是一个将一个人与......联系起来的钥匙。