gpt4 book ai didi

python - pymongo+update 抛出 $pull

转载 作者:可可西里 更新时间:2023-11-01 09:46:04 28 4
gpt4 key购买 nike

我有一个 mongo 文档:

{ "_id" : 0, "name" : "Vasya", "fav" : [ { "type" : "t1", "weight" : 1.4163 }, { "type" : "t2", "weight" : 11.7772 }, { "type" : "t2", "weight" : 6.4615 }, { "type" : "homework", "score" : 35.8742 } ] }

要删除数组“fav”中的最低元素,我使用以下 Python 代码:

db.people.update({"fav":{"type":"t2", "weight":lowest}}, {"$pull":{"fav"{"type":"t2", "weight":lowest}}})

其中变量 lowest 是 6.4615 和 35.8742 之间的最低值。

问题是这段代码什么都不做。没有错误,也没有从数组中删除值。但如果我在 mongo shell 中编写相同的代码,结果是肯定的。

不幸的是,我在 pymongo 和 mongo 中的体验不是很好。因此,如果有人知道问题出在哪里,那就太好了。

最佳答案

语法在 Mongo shell 和 pymongo 中对我来说工作正常,所以怀疑问题是 float 的精度。

我不知道你是如何推导/计算最低的,但你可能想考虑标准化小数点后有效数字的最大数量,或者甚至可能有一个函数来标准化你的 float 以相同的精度,无论是在您最初保存文档时,还是在您稍后查询或更新文档时。

Mongo 和 Python 都不认为 6.676176060654615 等于 6.67617606065,这解释了为什么您的更新没有效果。

关于python - pymongo+update 抛出 $pull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13462863/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com