2013-06-04 2 views
0

Я хочу создать mongodb для хранения результатов домашних заданий, я создаю homework, который является словарем, в котором хранится массив результатов по каждому предмету.Как вставить в массив вложенный в словаре?

import pymongo 

DBCONN = pymongo.Connection("127.0.0.1", 27017) 
TASKSINFO = DBCONN.tasksinfo 

_name = "john" 
taskid = TASKSINFO.tasksinfo.insert(
    {"name": _name, 
    "homework": {"bio": [], "math": []} 
    }) 

TASKSINFO.tasksinfo.update({"_id": taskid}, 
          {"$push": {"homework.bio", 92}}) 

Когда я попытался оттолкнуть некоторую информацию в БД, есть ошибка:

Traceback (most recent call last): 
    File "mongo_push_demo.py", line 13, in <module> 
    {"$push": {"homework.bio", 92}}) 
    File "/usr/local/lib/python2.7/dist-packages/pymongo-2.5-py2.7-linux-i686.egg/pymongo/collection.py", line 479, in update 
    check_keys, self.__uuid_subtype), safe) 
    File "/usr/local/lib/python2.7/dist-packages/pymongo-2.5-py2.7-linux-i686.egg/pymongo/message.py", line 110, in update 
    encoded = bson.BSON.encode(doc, check_keys, uuid_subtype) 
    File "/usr/local/lib/python2.7/dist-packages/pymongo-2.5-py2.7-linux-i686.egg/bson/__init__.py", line 567, in encode 
    return cls(_dict_to_bson(document, check_keys, uuid_subtype)) 
    File "/usr/local/lib/python2.7/dist-packages/pymongo-2.5-py2.7-linux-i686.egg/bson/__init__.py", line 476, in _dict_to_bson 
    elements.append(_element_to_bson(key, value, check_keys, uuid_subtype)) 
    File "/usr/local/lib/python2.7/dist-packages/pymongo-2.5-py2.7-linux-i686.egg/bson/__init__.py", line 466, in _element_to_bson 
    type(value)) 
bson.errors.InvalidDocument: cannot convert value of type <type 'set'> to bson 

ответ

5
{"$push": {"homework.bio", 92}}) 

Это должно быть :, не ,.

{'a', 1} представляет собой набор из двух элементов в Python, поэтому вы получаете ошибку.

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