我有一个PHP-MongoDB项目。我使用的是:MongoDB排序仅适用于集合的一部分
- 笨
- PHP的MongoDB驱动
- XAMPP
- 的MongoDB Connector from vvvlad
我有一个排序方法的问题。
我有这个集合(注意[ '秩序']属性):
[4d642296bb3dfde40c000002] => Array
(
[_id] => MongoId Object
(
[$id] => 4d642296bb3dfde40c000002
)
[project_id] => 4d642296bb3dfde40c000001
[parent_id] => 4d642296bb3dfde40c000001
[version] => 0
[title] => Introducción
[body] => Introducción Lorem ipsum dolor sit amet, consectetur adipiscing elit.
[order] => 0
)
[4d642296bb3dfde40c000003] => Array
(
[_id] => MongoId Object
(
[$id] => 4d642296bb3dfde40c000003
)
[project_id] => 4d642296bb3dfde40c000001
[parent_id] => 4d642296bb3dfde40c000001
[version] => 0
[title] => Marco Contextual
[body] => Marco Contextual Lorem ipsum dolor sit amet, consectetur adipiscing elit.
[order] => 2
)
[4d642296bb3dfde40c000004] => Array
(
[_id] => MongoId Object
(
[$id] => 4d642296bb3dfde40c000004
)
[project_id] => 4d642296bb3dfde40c000001
[parent_id] => 4d642296bb3dfde40c000001
[version] => 0
[title] => Marco Conceptual
[body] => Marco Conceptual Lorem ipsum dolor sit amet, consectetur adipiscing elit.
[order] => 3
)
[4d642296bb3dfde40c000005] => Array
(
[_id] => MongoId Object
(
[$id] => 4d642296bb3dfde40c000005
)
[project_id] => 4d642296bb3dfde40c000001
[parent_id] => 4d642296bb3dfde40c000001
[version] => 0
[title] => Capitulo I
[body] => Capitulo I Lorem ipsum dolor sit amet, consectetur adipiscing elit.
[order] => 4
)
[4d642296bb3dfde40c000006] => Array
(
[_id] => MongoId Object
(
[$id] => 4d642296bb3dfde40c000006
)
[project_id] => 4d642296bb3dfde40c000001
[parent_id] => 4d642296bb3dfde40c000001
[version] => 1
[title] => Capitulo II
[body] => Capitulo II Lorem ipsum dolor sit amet, consectetur adipiscing elit.
[order] => 5
)
[4d642296bb3dfde40c000007] => Array
(
[_id] => MongoId Object
(
[$id] => 4d642296bb3dfde40c000007
)
[project_id] => 4d642296bb3dfde40c000001
[parent_id] => 4d642296bb3dfde40c000001
[version] => 0
[title] => Conclusión
[body] => Conclusión Lorem ipsum dolor sit amet, consectetur adipiscing elit.
[order] => 6
)
[4d6422a7bb3dfde40c000008] => Array
(
[_id] => MongoId Object
(
[$id] => 4d6422a7bb3dfde40c000008
)
[project_id] => 4d642296bb3dfde40c000001
[parent_id] => 4d642296bb3dfde40c000001
[version] => 0
[title] => i1
[body] => New Lorem Ipsum
[order] => 1
)
,我从这个得到:
function get_entries(){
$project_id = key($this->projects_model->get_project());
$data=array(
'project_id' => $project_id
);
return $this->mdb->get(
$this->mdb->sinapsisDB->entries,
$data,
array('order'=>1)
);
}
正如你可以看到我试图排序结果使用['order']属性,但返回的数组没有按这种方式排序,值得注意的是,前6个索引是在一个循环中同时创建的,而最后一个(不按顺序)是后来由一个函数创建,该函数根据所需的顺序搜索新条目并进行必要的['order']操作o让他们适合。
起初我还以为是从vvvlad连接器“获得”的方法是行不通的,但是当我尝试
db.entries.find().sort({$order:1})
在蒙戈客户端同样的情况
我想,这与一些关系'索引值',但我不明白为什么这种简单的排序方法不起作用。
预先感谢您的时间:)
您正在通过shell运行“db.entries.find()。sort({$ order:1})”吗?不应该是db.entries.find()。sort({'order':1})? – 2011-02-22 22:22:33