MongoDB中未删除数组元素

时间:2017-04-08 22:41:58

标签: mongodb shell

这是我的名为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 }
)

2 个答案:

答案 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

我失去了半天。