MongoDB排序只对集合的一部分起作用
我有一个PHP MongoDB项目。我正在使用:MongoDB排序只对集合的一部分起作用,mongodb,Mongodb,我有一个PHP MongoDB项目。我正在使用: 共点火器 PHP MongoDB驱动程序 Xampp 我对排序方法有问题 我有这个集合(注意['order']属性): 我从中得到: function get_entries(){ $project_id = key($this->projects_model->get_project()); $data=array( 'project_id' => $project_id );
- 共点火器
- PHP MongoDB驱动程序
- Xampp
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']操作以使其适合
起初,我认为来自vvvlad连接器的“get”方法不起作用,但在尝试时也会发生同样的情况
db.entries.find().sort({$order:1})
在Mongo客户端中
我认为这与“索引值”有一定关系,但我不理解为什么这个简单的排序方法不起作用
提前感谢您的时间:)我刚刚在Mongo上运行了以下测试,看起来一切正常:
db.foo.drop()
db.foo.insert( { text : "blah", order : 1 } )
db.foo.insert( { text : "bl", order : 0 } )
db.foo.insert( { text : "blahblah", order : 2 } )
printjson(db.foo.find().sort( { order : 1 } ).toArray())
我不熟悉vvvlad的代码,但您的shell示例肯定存在问题
db.entries.find().sort({$order:1})
$订单
不正确(无$
)
您确定vvvlad的代码支持排序吗?您正在通过shell运行“db.entries.find().sort({$order:1})”?是不是应该是db.entries.find().sort({'order':1})?非常感谢我测试了您的建议,我还进一步阅读了MongoDB文档和PHP。我使用print_r在屏幕上显示集合,但我将最后一个['order']属性保存为字符串而不是整数,这是阻止正确排序的错误。愚蠢的错误,但发生在同时学习很多东西的时候。呵呵,非常感谢你的回答&你的时间:)。。。哦,是的,vvvlad支持排序:)我的坏一直。
db.entries.find().sort({$order:1})