2016-03-17 4 views
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_#. Я не совсем уверен, что не так.

+0

Это не похоже на то, что вы «действительно» хотите сохранить. Я подозреваю, что ваш «реальный» объект имеет разные данные, которые вы действительно хотели бы сохранить, а '.to_dict()' на самом деле не возвращает правильную сериализацию. Таким образом, ваша проблема связана с сериализацией данных с вашего объекта. –

+0

Спасибо, чувак. Починил это! – user3143067

ответ

0

Решено. Когда to_dict() был вызван во второй раз, был возвращен другой dict. Имеет отношение к генератору, который я использовал.

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