2016-12-31 5 views
0

(CherryPy 프레임 워크를 사용하여) MongoDB를 개체에서 포함 된 값을 검색합니다내가 MongoDB의에서 다음 문서를 삽입 한

@cherrypyexpose 
def create(self): 
    client = MongoClient() 
    db = client.database_name   
    result = db.users.insert_one({ 
     "email": "[email protected]", 
     "company": { 
      "name": "ABC Company" 
     } 
    }) 

지금은 "ABC 회사"입니다 company.name를 검색하고 싶습니다.

@cherrypy.expose 
def result(self): 
    client = MongoClient() 
    db = client.database_name   
    cursor = db.users.find({"email":"[email protected]"}) 
    for document in cursor: 
     value = document["company.name"] 
    return value 

나는 다음 구문 내가 관계형 데이터베이스에서하는 것처럼 "company.name"를 사용하여이 값을 검색 할 시도했지만이 오류 받고 있어요 :

"KeyError: 'company.name'"은 무엇에 대한 올바른 구문 것을 Mongo에서 "company.name"을 검색 하시겠습니까?

+0

'dB = client.database_name'와'db.users.insert_one' 나쁜 아이디어 왜냐하면 모음이있는 경우 dB는, 존재하는 경우 경우 중복 아래 키 등 또 다른 점은'cursor.db.collection.some_variables.find_one ({ '_ id': 'entry'})'와 동등한'cursor [db] [collection] [some_variable] [entry] [some values]''그래서 mongo db 복수의 콜렉션 명을 허가하지 않는다 (이것은 유효한'tree' 메소드가 아닙니다). 커서 [db_name] [collection_name]'삽입, 삭제, 업데이트 ' – dsgdfg

+1

@dsgdfg ['cursor [db] [collection]'은'cursor.db.collection'와 같지 않습니다.] (http://stackoverflow.com/questions/) 41262707/in-mongoshell-able-to-my-collection-db-collection-name-return-n) – styvane

+0

사실,'cursor.db'는 정적이어서 큰 트리에서는 유용하지 않습니다. 그렇지 않으면 항목을 검색/쓰는 데 필요한 많은 키와 값을 정의해야합니다. 원본 DB를 변경하려면 커서를 닫고 다시 열어야합니다. – dsgdfg

답변

1

mongo 문서는 표준 중첩 파이썬 사전으로 반환됩니다. 그래서 :

value = document["company.name"] 

은이어야한다

value = document["company"]["name"] 
+0

증오하는 사람은 증오 할 것입니다. 나는 널지지했다. –

+0

해커가 해킹 할거야! 롭 감사합니다! – Rimo