2013-01-21 4 views
1
db.users.aggregate(
    {$match : 
     {"_id" : ObjectId("50f69176904e1d66affec20d")} 
    }, 
    {$unwind : "$connections"}, 
    {$match : 
     {$or : [ 
      {"connections.users" : {$exists : false}}, 
      {"connections.users.id" : "50f651b8b58bba7fbec2f223"} 
     ]}}, 
    {$group : {_id : "$connections.group"}} 
) 

여기에 특정 사용자가 존재하는 그룹 이름을 찾고 있습니다. mongodb 쉘에서 올바른 결과를 얻고 있습니다. 이제는 리튬 프레임 워크에서 사용해야합니다. 명령을 도와주세요. 톰 Maiaroto의 기사 당신은 읽어야 http://pastebin.com/P8uMw9cjmongodb to query 리튬 명령

답변

0

"MongoDB Aggregation of all Shapes and Sizes"

그것은지도/축소, 그룹화 및 새로운 집계 프레임 워크는

+1

슬프게도 더 이상 존재하지 않습니다. 기본 아이디어는 다음과 같습니다. Model :: connection() -> connection-> selectCollection ('collectionName') -> aggregate(); 리튬은 당신에게서 아무것도 숨기지 않으며 당신은 핵심 몽고 PHP 확장 클래스에 도달 할 수 있습니다. 만들려는 명령이나 쿼리를 기반으로 php.net 및 Mongo 설명서를 참조하십시오. – Tom

+0

또한 모델명 :: meta ('source')를 사용하여 컬렉션 이름을 얻을 수 있으므로 변경, 재사용 가능성 등을 위해 수동으로 문자열을 입력 할 필요가 없습니다. – Tom

1

이 같은 임의의 명령을 실행할 수 있습니다 커버 : 수집 구조의 경우,이 링크를 참조

$files = Files::connection()->connection->command(array("geoNear" => "fs.files", "near" => $coords, "maxDistance" => 1)); 

분명히 Users :: connection()을 사용하지만 작업중 인 집계가 일부 향상되었지만 확실하지는 않습니다. 마스터 지점.

집계에 사용되는 데모 앱은 https://github.com/jmikola/li3-mongodb-aggregation-demo/blob/master/app/controllers/DemoController.php입니다.이 앱을 사용해보세요.

+0

이것은 더 좋습니다 위의 링크가 주어지면 답변이 삭제되었습니다. 전체 데이터베이스에서 명령을 실행하고 싶지 않으면 selectCollection()을 사용해야 할 수도 있습니다 (명령 옵션의 다른 위치에 컬렉션을 지정하면됩니다). – Tom