首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获得Mongodb中的所有数组元素?

如何获得Mongodb中的所有数组元素?
EN

Stack Overflow用户
提问于 2013-04-26 11:24:05
回答 2查看 1.3K关注 0票数 0

我有一个教室的集合结构如下

代码语言:javascript
运行
复制
{
  "_id" : ObjectId("517a54a69de5ee980b000003"),
  "class_name" : "A",
  "students" : [{
    "sname" : "John",
    "age" : "13"
  }, {
    "sname" : "Marry",
    "age" : "12"
  }, {
    "sname" : "Gora",
    "age" : "12"
  }]
}

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

UPDATE我使用的查询:

代码语言:javascript
运行
复制
$student_list=$collection->find(array(" rid"=>new MongoId($theObjId )), 
        array(
            "students" => 1,
        )
        );

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-26 12:13:55

$student_list是多行的MongoCursor。您需要遍历它才能访问您要查找的行。就像这样:

代码语言:javascript
运行
复制
$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。它更适合您的查询。

票数 1
EN

Stack Overflow用户

发布于 2013-04-26 11:57:05

您需要做的就是调用findOne()而不是find()

代码语言:javascript
运行
复制
$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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16235257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档