Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 参数顺序对Mongo查询性能的影响?_Mongodb_Performance - Fatal编程技术网

Mongodb 参数顺序对Mongo查询性能的影响?

Mongodb 参数顺序对Mongo查询性能的影响?,mongodb,performance,Mongodb,Performance,关于Mongo查询性能和查询参数顺序的一般问题 我们有一个用于存储文件元数据的集合,其中包括文件名和文件整型代码值的状态。集合中只有少量文件具有相同的名称,最多可能有几十个,但是可能有数千个文件具有相同的状态 如果存在类似以下结构的Mongo查询: db.getCollection('files').find( { '$and': [ { 'name': 'someFileName.csv' }, { 'status': { '$in': [ 12,

关于Mongo查询性能和查询参数顺序的一般问题

我们有一个用于存储文件元数据的集合,其中包括文件名和文件整型代码值的状态。集合中只有少量文件具有相同的名称,最多可能有几十个,但是可能有数千个文件具有相同的状态

如果存在类似以下结构的Mongo查询:

db.getCollection('files').find( { 
    '$and': [ 
        { 'name': 'someFileName.csv' },
        { 'status': { '$in': [ 12, 6 ] } } 
    ] 
})
db.getCollection('files').find( { 
    '$and': [ 
        { 'status': { '$in': [ 12, 6 ] } }, 
        { 'name': 'someFileName.csv' }
    ] 
})
…它是否会执行与以下格式相同的查询不同的操作:

db.getCollection('files').find( { 
    '$and': [ 
        { 'name': 'someFileName.csv' },
        { 'status': { '$in': [ 12, 6 ] } } 
    ] 
})
db.getCollection('files').find( { 
    '$and': [ 
        { 'status': { '$in': [ 12, 6 ] } }, 
        { 'name': 'someFileName.csv' }
    ] 
})

也就是说:$and子句参数的顺序是否重要?场景1的性能会比场景2好吗?因为理论上,文件名搜索会消除除少数记录之外的所有记录?或者Mongo是否在后台以这种方式运行?

不,查询中字段的顺序并不重要

此外,由于查询字段是隐式AND,因此这些字段也相当于:

db.getCollection('files').find( { 
    'status': { '$in': [ 12, 6 ] }, 
    'name': 'someFileName.csv'
})


在确定执行查询的最佳方式时,查询分析器对它们都一视同仁。

请分享信息来源