我想知道从不同文档中的数组中删除多个元素的最佳方法是什么。
鉴于以下两份学生文件:
{
"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())。