エラー内容
以下状況で、MongoDB
に
状況
XML
を取得して、 python Object
に変換する 1.
のpython Object
をjson Object
に変換 2.
で作成した json Object
をMongoDB
に登録
エラー出力
.virtualenvs/v3.4.3/lib/python3.4/site-packages/pymongo/helpers.py", line 301, in _check_write_command_response raise WriteError(error.get("errmsg"), error.get("code"), error) pymongo.errors.WriteError: The dotted field ...
原因
MongoDBの
Javaで.
と、$
が$
が
$
が 含まれる 場合の エラー
.virtualenvs/v3.4.3/lib/python3.4/site-packages/pymongo/helpers.py", line 301, in _check_write_command_response raise WriteError(error.get("errmsg"), error.get("code"), error) pymongo.errors.WriteError: The dollar ($) prefixed field '$' in ' ...
対応
remove_dots
メソッドで、.
と$
を
remove_dots
の
$
もremove_dots
ではなくなっていますが、
list
内にif
文を
def remove_dots(data): for key in data.keys(): if type(data[key]) is dict: data[key] = remove_dots(data[key]) if type(data[key]) is list: for i, v in enumerate(data[key]): if type(v) is dict: v = remove_dots(v) data[key][i] = v if '.' in key: data[key.replace('.', '_')] = data[key] del data[key] if '$' in key: data[key.replace('$', '@dollar@')] = data[key] del data[key] return data
以上です。
コメント