$addToSet在我的Python代码中替换数据而非追加

0 投票
1 回答
1032 浏览
提问于 2025-05-01 01:08

我正在尝试使用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 }
}) 

撰写回答