2011-02-22 4 views
0

PHP-MongoDB 프로젝트가 있습니다. 내가 사용하고 있습니다 :MongoDB 정렬은 콜렉션의 섹션에서만 작동합니다.

내가 정렬 방법에 문제가있다.

[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 개의 인덱스가 모두 동시에 루프에서 만들어지고 마지막 인덱스는 순서대로 정렬되지 않는다는 점에 주목하십시오 나중에 새 항목에 대한 원하는 순서를 검색하고 필요한 [순서] 작업을 수행하는 함수에 의해 생성됩니다. t o 그 (것)들을 적당한 장소에 만드십시오.

는 처음에 나는 vvvlad 커넥터에서 '수'방법은 작동하지 않는 것으로 생각하지만 난 몽고 클라이언트에

db.entries.find().sort({$order:1}) 

을하려고 할 때 같은

내가이 일부 관련이 있다고 생각 발생 '인덱싱 된 값'이지만이 단순한 정렬 방법이 작동하지 않는 이유를 알 수 없습니다. 당신을 위해 미리 시간에

감사합니다 :)

+0

쉘을 통해 "db.entries.find(). sort ({$ order : 1})"을 실행하고 있습니까? db.entries.find()가 아니어야합니다. sort ({ 'order': 1})? –

답변

0

난 그냥 몽고에서 다음 테스트를 실행하고 모든 것이 올바른 같습니다

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의 코드에 익숙하지 오전하지만 문제와 확실히있다 쉘 예제.

db.entries.find().sort({$order:1}) 

$order가 잘못 (NO $).

vvvlad 코드가 정렬을 지원합니까?

+0

나는 MongoDB 문서와 PHP에 대해서 더 읽고 있었다. print_r을 사용하여 화면에 컬렉션을 표시했지만 마지막 [[order]] 특성을 Integer 대신 문자열로 저장했습니다. 올바른 정렬을 방해하는 오류였습니다. 바보 같은 오류가 발생하지만 한 번에 많은 것들을 배울 때 대단히 감사합니다 답변 : & ... vvvlad는 정렬을 지원합니다 :) 항상 내 나쁜. – escusado

관련 문제