我的python代码中的$ addToSet替换数据而不是附加数据

时间:2014-11-01 18:34:48

标签: python mongodb pymongo mongodb-query

我正在尝试使用Pymongo在我的收藏中保存数据。

port = 27017
conn = pymongo.MongoClient('localhost', port)
db   = conn.dbcoll
newReservationId ="Value change from front-end"
customerData = { 'firstName':"Jamesss", 'lastName':"Jamesss" }
db.person.update({'_id':'1223'},  customerData )
db.person.update({'_id':'1223'},  {"$addToSet":{"reservationList":newReservationId }} ) 
conn.close()

每次字段“reservationList”被新值“newReservationId”覆盖。假设在数组中附加新值“newReservationId”。

任何人都可以让我知道为什么$ addToSet不能像它想象的那样工作?

感谢您的帮助。

干杯,

1 个答案:

答案 0 :(得分:1)

您的$addToSet不是问题,它是覆盖整个对象的update之前的问题。使用$set只更新这两个customerData字段:

db.person.update({'_id':'1223'}, {"$set": customerData} )
db.person.update({'_id':'1223'}, {"$addToSet":{"reservationList":newReservationId }}) 

更好的是,将两个更新合并为一个:

db.person.update({'_id':'1223'}, {
    "$set": customerData,
    "$addToSet":{"reservationList":newReservationId }
})