我有一个带有嵌套数组的文档,我似乎无法更新,我一直在圈子里,它开始感谢我,这是文档:
mongo = pymongo.Connection()['FINS_ALL_L']['FIN_L']
f = {'plant': 'local',
'T1':{
'PID':4278,
'INST_SPECS' :{'unit_stk': 6386,
'thresh': 0.4,
'max_in': 789878,
'avg_cut': 45565},
'PU_ARRAY' : [{'power': 45789, 'unit': 78},{'power': 45757, 'unit': 1},{'power': 45127, 'unit': 11},{'power': 42567, 'unit': 10}]},
'T2':{
'PID':8422,
'INST_SPECS' :{'unit_stk': 4575,
'thresh': 0.49,
'max_in': 187878,
'avg_cut': 14787},
'PU_ARRAY' : [{'power': 51475, 'unit': 7},{'power': 59895, 'unit': 2},{'power': 57578, 'unit': 3},{'power': 54525, 'unit': 15}]}}
py_mong = mong.find_one({'plant':'local'})['T2']['PU_ARRAY']
print py_mong
>>>[{u'power': 51475, u'unit': 7}, {u'power': 59895, u'unit': 2}, {u'power': 57578, u'unit': 3}, {u'power': 54525, u'unit': 15}]
我尝试了很多'$ push'的变种,它们不会抛出错误,但它们似乎也没有更新。例如:
mongo.update({'plant': 'local','T2':'PU_ARRAY'},
{'$push':
{'T2.$.PU_ARRAY':
{'power': 42577, 'unit': 19}
}
}
)
这不会引发异常,但是没有更新。有人可以帮忙吗?
答案 0 :(得分:3)
不匹配,没有更新。没有这样的"价值"在" T2"下,它只是一个"字段名称"。我不知道您是否打算$exists
,但$push
并不关心。此外,语句中不需要positinal $
运算符,因为即使这是$exists
测试,您也不会匹配数组位置。 " T2"不是数组:
mongo.update(
{'plant': 'local'},
{'$push': { 'T2.PU_ARRAY': {'power': 42577, 'unit': 19 } } }
)