Не удается обновить документ в PyMongo - PullRequest
3 голосов
/ 21 марта 2012

У меня есть код на языке Python / PyMongo (код должен имитировать внутреннее объединение и все документы из второй коллекции, чтобы поместить (вставить внутрь) в список и добавить в первый соответствующий документ в Mongo).Идея состоит в том, чтобы загрузить две коллекции и передать два поля (имена полей для подключения) и все документы из второй коллекции с таким же атрибутом, как в первом списке, и добавить в соответствующий документ в первой коллекции.

(Например, в первой коллекции у меня есть документы с полями "страна", "население", а во второй у меня есть "страна" и "автомобильные заводы", и я хочу поместить (денормализовать) список первой коллекции всех заводов для соответствующей страны)

    for f in first_collection_records:
        temp=[]
        id=f['_id']
        second_collection_records.rewind()
        for s in second_collection_records:
            if f[field_one]==s[field_two]:
                temp.append(s)
        f[self.__second_collection_name__]=temp
        first_collection_records.update({"_id":id}, f, safe=True)

, но я получил сообщение об ошибке «Объект Cursor» не имеет атрибута «update».Что я сделал не так?

1 Ответ

6 голосов
/ 21 марта 2012

first_collection_records является pymongo.cursor.Cursor объектом.Это результат, который вы получаете, когда звоните db.first_collection.find().Вам нужно позвонить update на исходный collection объект:

# assuming your query looked something like this
first_collection_records = db.first_collection.find()

# your code here....

# your last line should reference the collection object to do the update
db.first_collection.update({"_id":id}, f, safe=True)
...