MongoDB从数组中删除对象删除完整数组

时间:2015-06-13 14:12:00

标签: arrays mongodb object

我有一个像这样的文件:

{
        "_id" : 0,
        "name" : "aimee Zank",
        "scores" : [
                {
                        "type" : "exam",
                        "score" : 1.463179736705023
                },
                {
                        "type" : "quiz",
                        "score" : 11.78273309957772
                },
                {
                        "type" : "homework",
                        "score" : 6.676176060654615
                },
                {
                        "type" : "homework",
                        "score" : 35.8740349954354
                }
        ]
}

在该文档中,我想删除类型为家庭作业得分最低的分数。首先,我正在尝试在mongo shell上执行此操作,因此我手动设置了值。

 db.students.update({ _id:0}, {$unset: {"scores.score":6.676176060654615} })

该查询无效,所以我尝试在Google上搜索,我在这里发现了一个关于从数组中删除对象的问题,我尝试了另一个查询:

db.students.update({ _id:0 }, { $unset: 
                                   { "scores": { 
                                        "homework": 6.676176060654615 } } }, false, true);

第二个查询有效,但不是我预期的,因为结果是

{ "_id" : 0, "name" : "aimee Zank" }

要检查类型作业的最低值是否存在,我会在此查询中找到:

db.students.find({"scores.score":6.676176060654615}).pretty();

1 个答案:

答案 0 :(得分:1)

如果您只想删除/提取score = 6.676176060654615,则只需使用以下查询:

db.collection.update({"_id":0},{"$pull":{"scores":{score: 6.676176060654615}}})

如果您想找到最小值并将其从收藏中删除。你需要这样做是两个步骤。有关详细信息refer this