2016-12-31 1 views
0

Я вставленные следующий документ в MongoDB:Получить встроенные значения из MongoDB объекта (с помощью CherryPy Framework)

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

Я хотел бы теперь, чтобы получить company.name, который является «Компания ABC».

@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'"

Что бы правильный синтаксис восстановить «company.name» на Mongo?

+0

'дб = client.database_name' и' db.users.insert_one' плохая идея потому, если БД существует, если коллекция существует, если ключ под дубликатом и т.д. Другим пунктом является 'cursor [db] [collection] [some_variable] [entry] [some values]' равно to cursor.db.collection.some_variables.find_one ({'_ id': 'entry'}) 'so mongo db не допускаются несколько имен коллекций (это не допустимый метод tree). Cursor [db_name] [collection_name] 'insert, delete, update' – dsgdfg

+1

@dsgdfg [' cursor [db] [collection] 'не равно' cursor.db.collection'] (http://stackoverflow.com/questions/ 41262707/in-mongoshell-not-able-to-connect-to-my-collection-db-collection-name-return-n) – styvane

+0

True, 'cursor.db' является статическим, а не полезным для большого дерева. В противном случае необходимо определить ключи и значения для поиска/записи элемента. Нужно закрыть и снова открыть курсор, если источник изменений db. – dsgdfg

ответ

1

Этот документ mongo возвращается как стандартный вложенный словарь python. Итак:

value = document["company.name"] 

Должен быть

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

Хаттеры собираются ненавидеть. Я поддержал вас. –

+0

Хакеры собираются взломать! Спасибо, Роб! – Rimo

 Смежные вопросы

  • Нет связанных вопросов^_^