defaultdict
PyMongo を使用して MongoDBに書き込めないようです。返事は_id
来ますが、書類は書かれていません。
>>> coll
Collection(Database(Connection('localhost', 27017), u'db_name'), u'coll_name')
>>> doc
{'field1': defaultdict(<type 'int'>, {...}), 'field2': defaultdict(<type 'int'>, {...})}
>>> obj_id = coll.insert(doc)
>>> obj_id
ObjectId('50cdc4df15b6f6dc3f496af7')
>>> coll.find_one() # nothing...
>>> [x for x in coll.find({'_id': '50cdc4df15b6f6dc3f496af7'})]
[]
何が起きてる?この失敗した書き込みをデバッグするにはどうすればよいですか?
編集:
接続を切り替えると、次のようsafe=True
になります。
Traceback (most recent call last):
File "populate_mongo.py", line 36, in <module>
oid = coll.insert(series)
File "/Users/user/.virtualenvs/test/lib/python2.7/site-packages/pymongo/collection.py", line 359, in insert
continue_on_error, self.__uuid_subtype), safe)
File "/Users/user/.virtualenvs/test/lib/python2.7/site-packages/pymongo/mongo_client.py", line 852, in _send_message
rv = self.__check_response_to_last_error(response)
File "/Users/user/.virtualenvs/test/lib/python2.7/site-packages/pymongo/mongo_client.py", line 795, in __check_response_to_last_error
raise OperationFailure(details["err"], details["code"])
pymongo.errors.OperationFailure: too many namespaces/collections
したがって、これは Mongo が私のデータを保持できず、コレクションがdefaultdict
.