这是我的名为STUDENTS的集合
{
"_id" : 0,
"name" : "aimee Zank",
"scores" : [
{
"type" : "exam",
"score" : 1.46317973670502
},
{
"type" : "quiz",
"score" : 11.7827330995777
},
{
"type" : "homework",
"score" : 6.67617606065462
},
{
"type" : "homework",
"score" : 35.8740349954354
}
]
}
当我运行它时,我可以通过HOMEWORK删除两个数组元素:
db.students.update(
{ '_id': 0 },
{ $pull: { scores: { type: 'homework' } } },
{ multi: true }
)
但是,当我尝试按实际分数删除一个数组以及type = Homework时, 它不是删除该数组元素。 任何人都可以请求帮助,没有得到任何文档,尝试使用单引号和双引号等。
db.students.update(
{ '_id': 0 },
{ $pull: { scores: { type: 'homework', score: 6.67617606065462 } } },
{ multi: true }
)
答案 0 :(得分:2)
虽然我无法重现它,但通常不建议比较浮点数是否相等。相反,你需要将它与一个合理的余量进行比较,使其超过预期值,然后将其与预期值进行比较,例如
db.students.update(
{ '_id': 0 },
{ $pull: { scores: { type: 'homework', score: {$gte:6.67617606065461, $lte: 6.67617606065463 }} } },
{ multi: true }
)
答案 1 :(得分:0)
好的,它不是任何类型的Bug,我使用的是IDE RoboMongo。 RoboMongo先生完成了
score: 6.676176060654615
到
score: 6.67617606065462
我失去了半天。