【问题标题】:find() query MongoDB for phpfind() 查询 MongoDB for php
【发布时间】:2014-05-13 14:22:29
【问题描述】:

您好,我正在为我的新项目使用 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

请帮帮我..

【问题讨论】:

    标签: php mongodb


    【解决方案1】:

    键“College”是一个数组,您试图将其视为“子文档”(但这不允许存储多个学院)

    我相信你想要这里的 elemMatch 关键字:http://docs.mongodb.org/manual/reference/operator/query/elemMatch/

    编辑:再看一遍之后,我认为你的结构有点不正常。每个学院或学校将有多少“学生”?请记住,每个父文档不能超过 10mb,并且当您选择一个文档时,必须通过连接将整个文档发送回(除非您使用聚合或 map/reduce。我认为您可能想要收集人物,然后是一个将人物与……其他东西相关联的键。

    【讨论】:

    • 我在 mongodb 控制台中尝试了这个查询,但是得到了测试集合中包含的所有值。这是一个查询 db.test.find({ College: { $elemMatch : { name: "jack" } } })
    • 它将返回整个文档,除非您使用聚合或映射/减少。同样,我认为您需要更改数据结构。
    • 谢谢老哥帮忙,我有问题
    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多