2017-09-13 2 views
0

내가 값으로 순서대로 배열 '이벤트'의 요소를 얻기 위해 몽고 쉘에서이 쿼리를 사용하여 필드PHP는 MongoDB의 일치와 통합 및 정렬 순서

db.collection_name.aggregate(
{ $match: { 
    _id : ObjectId("59941bec47582c1e92b93c9b") 
}}, 
{ $unwind: '$events' }, 
{ $sort: { 
    'events.start': 1 
}}) 

을 '시작'그러나 난 몰라 어떻게 PHP에서 동일한 일을하는지 이해하십시오. 나는 결과없이 쓰기 위해 노력했다 :이 다른 방법도 시도

$client = new MongoClient("mongodb://admin:[email protected]"); 
$collection = $client->db_name->collection_name; 

$cursor = $collection->aggregate([ 
     ['$match' => ['_id' =>new MongoDB\BSON\ObjectID("59941bec47582c1e92b93c9b")]], 
     ['$unwind' => '$events'], 
     ['$sort' => ['events.start' => 1]] 
]); 

foreach($cursor as $document) { 
    var_dump($document); 
} 

:

$manager = new MongoDB\Driver\Manager("mongodb://admin:[email protected]:27017"); 

$command = new MongoDB\Driver\Command([ 
    'aggregate' => 'collection_name', 
    'pipeline' => [ 
     ['$match' => ['_id' =>new MongoDB\BSON\ObjectID("59941bec47582c1e92b93c9b")]], 
     ['$unwind' => '$events'], 
     ['$sort' => ['events.start' => 1]] 
    ], 
]); 
$cursor = $manager->executeCommand('db_name', $command); 

foreach($cursor as $key=>$document) { 
    var_dump($document); 
} 
+0

귀하의 질의가 정상적으로 보입니다. 쿼리가 반환 될 샘플 문서를 추가하는 것을 고려하십시오. 간단한 찾기 쿼리를 실행하여 올바른 사용 권한이있는 mongo 서버 및 db에 연결되었는지 확인하십시오. – Veeram

+0

예, 감사합니다. 두 번째 코드에는 인증 문제가 있습니다. 연결 URL에 db 이름을 추가했습니다. – aleknx1000

답변

0

나는 해결책을 발견했습니다. 이에

$manager = new MongoDB\Driver\Manager("mongodb://admin:[email protected]:27017"); 

:

$manager = new MongoDB\Driver\Manager("mongodb://admin:[email protected]:27017/db_name"); 

인증 문제였다 나는이 줄을 변경했습니다.