$addToSet在我的Python代码中替换数据而非追加
我正在尝试使用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 个回答
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 }
})