如果我在集合mongo中的数据是这样的
{ "_id" : ObjectId("4fff9946af8c6149aed251ab"), "subject_slug" : "math", "lesson_slug" : "mat01" }
{ "_id" : ObjectId("4fff9946af8c6149aed251ac"), "subject_slug" : "math", "lesson_slug" : "mat02" }
{ "_id" : ObjectId("4fff9946af8c6149aed251ad"), "subject_slug" : "math", "lesson_slug" : "mat03" }
{ "_id" : ObjectId("4fff9946af8c6149aed251ae"), "subject_slug" : "eng", "lesson_slug" : "eng01" }
{ "_id" : ObjectId("4fff9946af8c6149aed251af"), "subject_slug" : "eng", "lesson_slug" : "eng02" }
{ "_id" : ObjectId("4fff9946af8c6149aed251b0"), "subject_slug" : "eng", "lesson_slug" : "eng03" }
{ "_id" : ObjectId("4fff9946af8c6149aed251b1"), "subject_slug" : "phy", "lesson_slug" : "phy01" }
{ "_id" : ObjectId("4fff9946af8c6149aed251b2"), "subject_slug" : "phy", "lesson_slug" : "phy02" }
{ "_id" : ObjectId("4fff9946af8c6149aed251b3"), "subject_slug" : "phy", "lesson_slug" : "phy03" }
{ "_id" : ObjectId("4fff9946af8c6149aed251b4"), "subject_slug" : "chem", "lesson_slug" : "che01" }
{ "_id" : ObjectId("4fff9946af8c6149aed251b5"), "subject_slug" : "chem", "lesson_slug" : "che02" }
{ "_id" : ObjectId("4fff9946af8c6149aed251b6"), "subject_slug" : "chem", "lesson_slug" : "che03" }
{ "_id" : ObjectId("4fff9946af8c6149aed251b7"), "subject_slug" : "chem", "lesson_slug" : "che04" }
如果我想要第6行中没有循环数据的数据。是否有PHP中的短代码来获取该行中的数据?
答案 0 :(得分:4)
为了找到第六条记录,您需要使用一些MongoCursor methods:
sort()
所以有一个特定的顺序(例如_id
)skip()
跳过多条记录(跳过5找到第6条)limit()
限制为一个结果代码示例:
<?php
$mongo = new Mongo();
$collection = $mongo->mydb->subject;
$query = array();
$sort = array('_id' => 1);
// Find the 6th record
$doc = $collection->find($query)->sort($sort)->skip(5)->limit(1)->getNext();
print_r($doc);
?>
示例输出:
Array
(
[_id] => MongoId Object
(
[$id] => 4fff9946af8c6149aed251b0
)
[subject_slug] => eng
[lesson_slug] => eng03
)
请注意,如果您需要跳过大量文档,skip()
的性能可能会出现问题。如果可能,更高性能的选项是使用具有限制的范围查询。
答案 1 :(得分:0)
这看起来像是一个json格式化的内容,如何将它们全部读入一个对象,然后json_decode将它们转换为另一个,以便稍后您可以只读出第6行。