我如何 replace/update MongoDB 数据库中集合的 mongoengine ListField 的元素? (在python)
How do I replace/update an element of mongoengine ListField of a collection in a MongoDB database? (in python)
我刚刚开始学习 MongoDB 查询,我已经尝试了几个小时来执行以下操作:
我有一个 class 定义为
class Uni(mongoengine.Document):
instruments =mongoengine.ListField(mongoengine.ReferenceField(Instrument))
其中 Instrument 是另一个 Document 对象。现在我想在 ListField 中找到对 Instrument 对象“old_instrument”的特定引用,并将该引用替换为对“new_instrument”的引用。我一直在尝试以下操作:
Uni.objects(instruments=old_instrument).update(**{"set__$":new_instrument})
有人可以帮助我并详细说明解决方案吗?非常感谢!
所以我找到的解决方案是先从数据库中读取数组,然后修改它并更新回数据库。好像没有直接查询的解决办法。
for u in Uni.objects(instruments=old_instrument):
instr_array=u['instruments']
instr_array=[new_instrument if x == old_instrument else x for x in instr_array]
Uni.objects(name=u.name, date=u.date).update_one(upsert=True, instruments=instr_array)
我刚刚开始学习 MongoDB 查询,我已经尝试了几个小时来执行以下操作: 我有一个 class 定义为
class Uni(mongoengine.Document):
instruments =mongoengine.ListField(mongoengine.ReferenceField(Instrument))
其中 Instrument 是另一个 Document 对象。现在我想在 ListField 中找到对 Instrument 对象“old_instrument”的特定引用,并将该引用替换为对“new_instrument”的引用。我一直在尝试以下操作:
Uni.objects(instruments=old_instrument).update(**{"set__$":new_instrument})
有人可以帮助我并详细说明解决方案吗?非常感谢!
所以我找到的解决方案是先从数据库中读取数组,然后修改它并更新回数据库。好像没有直接查询的解决办法。
for u in Uni.objects(instruments=old_instrument):
instr_array=u['instruments']
instr_array=[new_instrument if x == old_instrument else x for x in instr_array]
Uni.objects(name=u.name, date=u.date).update_one(upsert=True, instruments=instr_array)