2010-08-08 4 views
1

두 명의 사용자간에 작업 로그 인 모음이 있습니다. 그것에는 src_id와 dest_id가 있습니다.

id1과 ids 목록 사이의 작업 인 "ids = [id2, id3, id4]"레코드를 모두 가져 오려고합니다.

다음 두 문장이 제대로 작동 :

act_obs = self.db.action_log.find(
     {'$or': [ 
      {'dest_id': id1, 'src_id': {'$in': ids} }, 
      {'src_id': id1, 'dest_id': {'$in': ids} } 
     ]} 
     ) 
그러나

act_obs = self.db.action_log.find(
     {'src_id': id1, 'dest_id': {'$in': ids} } 
     ) 

act_obs = self.db.action_log.find(
     {'dest_id': id1, 'src_id': {'$in': ids} } 
     ) 

, 이것은 내가 잘못이 무엇인지 알아낼 수있는 곳이며, 다음은 모든 결과를 반환 거부

누군가 내가 잘못하고있는 것에 대해 밝힐 수 있습니까? 그리고 더 중요한 것은 몽고에서 내가하려고하는 것을 성취하는 것입니다.

id1이 src_id이고 id 목록에있는 id 중 하나가 dest_id이거나 id1이 dest_id이고 임의의 id가 src_id 인 모든 레코드를 가져 오려고합니다. .

저는 pymongo 1.7을 사용하고 있습니다. 고맙습니다!

답변

0

$ 또는 연산자는 MongoDB 1.5.3 이상에서 사용할 수 있습니다.

대안은 ... 자바 스크립트 기능, 같은 뭔가를 사용하는 것입니다

find = self.db.action_log.find() 
find.where(pymongo.code.Code('this.dest_id==1 || this.src_id==2')) 
0

나는 $or처럼 사용할 수 있다고 생각하지 않습니다. 노조 클라이언트 측을 수행해야합니다.