2013-06-25 2 views
0

나는 MongoDB를위한 Doctrine 2 ODM을 배우고 있으며 Doctrines 문서 나 Google에서 답을 찾을 수없는 직접적인 질문이 있습니다. Doctrine MongoDB ODM

내가

{ "_id" : ObjectId("51c8a962f6d6ace76b374219"), 
"X" : 26, 
"Name" : "some name", 
"Level" : "Common" 
} 
{ 
"_id" : ObjectId("51c8a9bef6d6ace76b37421a"), 
"Y" : 1, 
"Name" : "Other name", 
"Level" : "Common" 
} 

가 나는 수준있는 모든 문서를 찾을 수 있습니다 알고 같은 컬렉션의 다음 두 문서 말해봐 : 공통

$dm->getRepository('Search\Model')->findBy(array("Level" => "Common")); 

를 사용을하지만 내가 어떻게 모든 문서를 어디에서 찾을 수 있습니다 필드 유형이 "X"가 아닌 "Y"입니까? 나는 모두를 돌려 보내고 그것을 걸러 낼 수있다 그러나 나는이 권리를 질문 할 수 있어야 한 ㄴ다는 것을 알고있다? 필드 유형 X와 Y는 별도의 컬렉션에 있어야하기 때문에 다릅니 까?

또한 Doctrine 문서에서와 같이 쿼리 작성기를 사용하여 다양한 쿼리를 시도했지만 운이 없습니다.

정말 "X"인 컬렉션의 모든 문서를 반환 할 수 있기를 바랍니다.

많은 감사

답변

0

당신은 여기에 부정 연산자를 사용할 수 있습니다 : 답장을

$dm->getRepository('Search\Model')->findBy(array("X" => 26, "Y" => array('$ne'=>1))); 
+0

감사합니다. 내가 정말로 찾고있는 것은 Y가 아닌 X 필드가있는 모든 문서를 찾는 것입니다. 위의 X 값에 대해 사용할 수있는 와일드 카드가 있습니까? 가장 가까운 SQL을 상응하는 것으로 추측 할 수 있습니다. SELECT * from Column = X – user12345

+0

@ sb12'$ exists'를 사용하면 해당 필드가 실제로 존재하는지 판단 할 수 있습니다. 문서에 존재합니다 : http://docs.mongodb.org/manual/reference/operator/exists/ – Sammaye

+0

답장을 보내 주셔서 감사합니다. 나는이 같은 것이 꽤 흔한 것이라고 생각했을 것입니다. 이유는 내가 문서의 다른 필드가 mongo의 schemaless 성격에 의한 것이 었습니다. 그래서 가정 된 질의는 곧바로 될 것입니다. 교리 문서에서 나는 내가 필요한 것을 돌려 줄 수있는 방법을 찾는다. 컬렉션의 모든 문서를 반환하고 응용 프로그램의 필터링을 처리하는 것이 가장 좋은 방법입니까? 모든 데이터 대신 커서가 반환되므로 성능은 문제가되지 않는다고 생각하십니까? 도움을 주셔서 감사합니다 – user12345

관련 문제