2015-02-04 3 views
0

에 동적 필드에 대한 검색MongoDB를 수집

db.collection.find({ name : "John"}) 

내가 필드 이름을 동적으로 만들려면, 명령은 무엇입니까?

예 :

db.collection.find({ <Dyanmic field variable> : <Value>}) 

또는이 기능을 달성하기위한 대안이 있는가?

+0

코드에 변수에 저장된 필드 이름을 사용하고 싶습니까? "필드 이름이'fieldname' 변수에 저장되어있는 필드가'22' 인 모든 문서를 찾으십니까? 또는 한 번에 MongoDB의 여러 필드 이름을 검색하려고합니다. " 'duck_''로 시작하는 필드의 값이'44' '인 모든 문서를 찾으십니까? – wdberkeley

답변

0

그냥 사전 키 대신에 변수를 사용

name = 'field_name' 
db.collection.find({name : "John"}) 
0

문제가 발생하면 데이터 유형을 모른 채 할 때. 그래서 이것을 처리하기 위해 다음을 사용했습니다 :

def multi_row_single_field_update(self, crieteriafldnm, crieteriafldtyp, updtfldnm, updtfldval, updtfldtyp): 
    try: 
     criteria = raw_input('\nEnter ' + crieteriafldnm + ' to update\n') 
     if crieteriafldtyp == 'int': 
      count = self.my_connect.find({str(crieteriafldnm): int(criteria)}).count() 
     else: 
      count = self.my_connect.find({str(crieteriafldnm): str(criteria)}).count() 
     updt_criteria = int(criteria) if updtfldtyp == 'int' else str(criteria) 
     self.my_connect.update(
      {"$atomic": 1}, 
      {str(crieteriafldnm): updt_criteria}, 
      {"$set": {str(updtfldnm): str(updtfldval)}}, 
      upsert=False, multi=True 
       ) 
+0

나는 이것이 OP의 질문에 대한 대답이라고 생각하지 않는다. IMHO가 동적으로 dict를 생성하고'db.collection.find (dinamically_built_dict)'를 실행할 필요성에 집중하십시오. – p1100i