0
Я пытаюсь вставить вложенный файл в mongoDB. Однако части документа отсутствуют.pymongo не вставляет полный dict
Код
def setup_user(db, name):
collection = 'user'
u = user()
u.user_name = name
u.defaultMembership()
print u.to_dict()
db[collection].insert(u.to_dict())
Он печатает:
{'prefer_complexity': '_not_available_',
'prefer_color': '_not_available_',
'user_name': 'admin',
'prefer_size': '_not_available_',
'user_membership_funcs': {
'color': {
'inf_1': {
'rel_pos_1': {
'a': 1,
'length': 3,
'b': 1,
'name': 'Ok',
'upper_bound': 1,
'lower_bound': 0,
'c': 0,
'eqn': '1/(1 + math.pow(abs(({x} - {c})/{a}), 2*{b}))',
'type': 'bell function',
'pos': 1
},
'rel_pos_2': {
'a': 1,
'length': 3,
'b': 1,
'name': 'Like',
'upper_bound': 1,
'lower_bound': 0,
'c': 1,
'eqn': '1/(1 + math.pow(abs(({x} - {c})/{a}), 2*{b}))',
'type': 'bell function',
'pos': 2
},
'rel_pos_0': {
'a': 1,
'length': 3,
'b': 1,
'name': 'Dislike',
'upper_bound': 1,
'lower_bound': 0,
'c': 0,
'eqn': '1/(1 + math.pow(abs(({x} - {c})/{a}), 2*{b}))',
'type': 'bell function',
'pos': 0
},
'fuzzy_var': {
'lower_bound': 0,
'upper_bound': 1,
'possible_ratings': OrderedDict([('Dislike', 0), ('Ok', 1), ('Like', 2)])
}
}
}
}
}
Однако только это вставляется в Монго.
{
"_id" : ObjectId("56ea2a48e53607168bc4b73e"),
"prefer_complexity" : "_not_available_",
"user_membership_funcs" : {
"color" : {
"inf_1" : {
"fuzzy_var" : {
"lower_bound" : 0,
"upper_bound" : 1,
"possible_ratings" : {
"Dislike" : 0,
"Ok" : 1,
"Like" : 2
}
}
}
},
"prefer_color" : "_not_available_",
"user_name" : "admin",
"prefer_size" : "_not_available_"
}
Как вы можете видеть, я хватаю информацию rel_pos_#
. Я не совсем уверен, что не так.
Это не похоже на то, что вы «действительно» хотите сохранить. Я подозреваю, что ваш «реальный» объект имеет разные данные, которые вы действительно хотели бы сохранить, а '.to_dict()' на самом деле не возвращает правильную сериализацию. Таким образом, ваша проблема связана с сериализацией данных с вашего объекта. –
Спасибо, чувак. Починил это! – user3143067