【发布时间】:2012-11-22 06:01:30
【问题描述】:
我有一个 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 中的体验不是很好。因此,如果有人知道问题所在,那就太好了。
【问题讨论】:
-
你能在 Python 中的更新调用之前打印出“最低”的确切值吗?我怀疑可能存在某种类型的浮点比较问题。
-
打印出来的就是浮点数
-
究竟是什么?它与您在文档中上面显示的值完全匹配吗?
-
您的更新中有语法错误 - 缺少“:” - 您可以剪切并粘贴准确您更新的代码行的样子吗?
-
谢谢,对于答案,所以我们所拥有的是 mongo 值是 6.676176060654615(例如),但在 python 中它被切割并表示为下一个 - 6.67617606065