mongodb从所有数组中删除元素

时间:2013-06-24 23:58:15

标签: mongodb

我想知道从不同文档中的数组中删除多个元素的最佳方法是什么。

鉴于以下两份学生文件:

{
    "name" : "Joe",
    "exams" : [
        {
           "foo" : "bar",
           "exam" : 1
        },
        {
           "foo" : "bar",
           "exam" : 2
        },
        {
           "foo" : "bar",
           "exam" : 3
        }
    ]
}

{
    "name" : "Peter",
    "exams" : [
        {
           "foo" : "bar",
           "exam" : 2
        },
        {
           "foo" : "bar",
           "exam" : 3
        },
        {
           "foo" : "bar",
           "exam" : 4
        }
    ]
}

说我要删除考试编号为2或3的所有“考试” - 阵列中的所有元素。我可以使用类似的东西:

db.students.update({}, {$pull: {exams: {exam: {$in:[2, 3]}}}}, {multi: true})

假设有很多其他学生有不同的考试编号,我想知道当我使用查询过滤只有正确考试的学生时它是否更快:

db.students.update({"exams.exam": {$in: [2,3]}}, {$pull: {exams: {exam: {$in:[2, 3]}}}}, {multi: true})

那么哪一个会更快?如果我使用第二种方法,索引会有助于加快速度,对吧?不幸的是,我还没有找到任何方法来测量更新速度(如查询上的explain())。

0 个答案:

没有答案