MongoDB:具有$ match和没有$ match的查询性能

时间:2018-10-23 21:25:56

标签: arrays mongodb mongodb-query

方法1

db.getCollection('testColl').find({
    "car": { 
        "$elemMatch": {
            "brand": {
                "$in": [                    
                "bmw","audi"           
                ]
            }
        }
    }
})

方法2

db.getCollection('testColl').find({
    "car.brand" :{$in : ["bmw","audi"]}

两者都返回相同的结果,但是我想知道哪种方法将有效使用(数据大约为5000万)。 还可以解释一下原因。谢谢!

1 个答案:

答案 0 :(得分:1)

如何通过3个快速步骤来query performance

第1步:运行带有解释的查询:

db.getCollection('testColl').find({
    "car": { 
        "$elemMatch": {
            "brand": {
                "$in": [                    
                "bmw","audi"           
                ]
            }
        }
    }
}).explain({verbose: true})

db.getCollection('testColl').find({
    "car.brand" :{$in : ["bmw","audi"]}).explain({verbose: true})

第2步Read about explain

第3步:阅读每种方法,以了解为什么结果准确无误