我们怎样才能获得Mongodb中的所有数组元素?

时间:2013-04-26 11:24:06

标签: php mongodb

我的课堂收藏结构为

{
  "_id" : ObjectId("517a54a69de5ee980b000003"),
  "class_name" : "A",
  "students" : [{
    "sname" : "John",
    "age" : "13"
  }, {
    "sname" : "Marry",
    "age" : "12"
  }, {
    "sname" : "Gora",
    "age" : "12"
  }]
}

使用php,我希望根据类_id获取并列出所有学生。我们怎么做呢?

更新我使用的查询:

$student_list=$collection->find(array(" rid"=>new MongoId($theObjId )), 
        array(
            "students" => 1,
        )
        );

我想把它打印出所有学生名单。我无法通过使用Foreach循环来管理它。

2 个答案:

答案 0 :(得分:2)

您需要做的就是致电findOne()而不是find()

$classroom = $collection->findOne(
  array( '_id' => new MongoId($theObjId )), 
  array( 'students' => 1 )
);

$classroom['students']; // will be an array of students

http://php.net/manual/en/mongocollection.findone.php

答案 1 :(得分:1)

$ student_list是多行的MongoCursor。您需要遍历它以访问您正在寻找的行。像这样:

$cursor = $collection->find(array("_id"=>new MongoId($theObjId)), 
        array("students" => 1));

foreach($cursor as $row)
    foreach($row['students'] as $student)
         echo $student["sname"], $student["age"];

另外,请考虑使用findOne。它更适合您的查询。