2012-05-16 2 views
0

나는 mongodb에서 초보자입니다. mongo shell과 php mongo driver 사이에는 몇가지 사용상의 차이가 있다고 생각합니다.mongo php에서 여러 기준으로 계산하는 방법

mongo 셸에서 여러 기준으로 계산할 수 있습니다. 예를 들면 다음과 같습니다.

db.coll.count({ _id:ObjectId('4fb27b9c876b88e53d000000'), 
       'items.title':'example' }); 

그러나 PHP mongo 드라이버를 사용하여 계산할 수 없습니다. 나는이 시도하지만, 그러나

$coll->count(array('_id'=>new MongoID('4fb27b9c876b88e53d000000'), 
        'items.title'=>'example')); 

0을 반환 내가) 발견()를 사용하고 (계산하면, 나도 같은 계산 결과를 얻을 :

$coll->find(array('_id'=>new MongoID('4fb27b9c876b88e53d000000'), 
        'items.title'=>'example')).count(); 

을 내가 원하는 것을 얻을 수 있지만, 나는 사슬 방식이 비효율적이라고 생각합니다. 내가 잘못?

어떻게 여러 기준으로 계산할 수 있습니까?

+0

분명히하기 위해 몽고 데이터베이스에는 'coll'이라는 콜렉션이 있고 'items'라는 콜렉션 내의 필드는 'title'이라는 필드가있는 서브 문서를 가리 킵니다 –

답변

3

하나의 코드 샘플은 천 단어의 가치가 있습니다. 모양 :

% mongo 
MongoDB shell version: 2.1.1 
connecting to: test 
> db.foo.count 
function (x) { 
    return this.find(x).count(); 
} 

이 답변에 대한 질문이 있습니까? :)

+0

여러 기준으로 계산할 수 있습니다. mongo shell, 나는 이것에 문제가 없다. 하지만 어떻게 PHP에서 동일한 일을 할 수 있습니까? 또한, find(). count()와 count()가 동일하다는 말을 들었 기 때문에 체이닝 방식을 사용하기로했습니다. – Muatik

+0

그게 내가 말하려고했던거야. 'find(). count()'를 사용하면, 드라이버가 올바르게 구현 되었다면 벌점이 없어야한다. –

0

먼저 찾을 사용해야합니다()와 수보다()

db.foo.count() -- will return 0, because db.foo it is only accessing the collection 

db.foo.find($where).count() --- will return the number of documents in the collection 

이 그것을 수행하는 방법이다.

관련 문제