用于查询的MongoDB复合索引

用于查询的MongoDB复合索引,mongodb,indexing,mongodb-query,compound-index,Mongodb,Indexing,Mongodb Query,Compound Index,我不熟悉MongoDB索引,想知道为下面的查询创建索引是否有意义 { $and: [ {_id: {$ne: "SOME_ID"}}, {_id: {$nin: ["ID1","ID2","ID3"]}}, {_id: {$nin: ["ID4","ID5","ID6"]}} ], age: {$gte: 18, $lte: 50}, gender: "male

我不熟悉MongoDB索引,想知道为下面的查询创建索引是否有意义

{
        $and: [
            {_id: {$ne: "SOME_ID"}},
            {_id: {$nin: ["ID1","ID2","ID3"]}},
            {_id: {$nin: ["ID4","ID5","ID6"]}}
        ],
        age: {$gte: 18, $lte: 50},
        gender: "male",
        location: {
            $nearSphere: {
                $geometry: {
                    type: "Point",
                    coordinates: ["some_valid_longitude", "some_valid_latitude"]
                },
                $maxDistance: 1000
            }
        },
        work: "work",
        registrationComplete: true
}
是否需要上述查询的索引?如何创建它?
索引会影响写入速度吗?

为什么不必要的重复,
$和:[{id:{$ne:“SOME_id”},{id:{$nin:[“ID1”,“ID2”,“ID3”},{id:{$nin:[“ID4”,“ID5”,“ID6”]},
可以简单地是
{$nin:{$nin:[“SOME_id”,“ID1”,“ID2”,“ID3”,“ID4”,“ID5”,“ID6”]
,我想这是我可以开始的初步优化。索引如何?这取决于几个因素,如运行查询的频率、预期的查询类型、读写比、系统上的可用内存量等,因为索引会带来写性能成本,但比频繁查询大数据集的成本更划算。考虑应用程序中每个查询的相对频率,以及查询是否对索引进行了验证。@ CrIDAM预计上述查询的读取量大于写入量,因此我认为这是索引的一个很好的用例。你认为以下是正确的索引吗:{u id:1,年龄:1,性别:1,位置:1,工作:1,注册完成:1}位置已被索引为2d\u Sphere。我相信索引将大大提高查询性能,因为它包含查询扫描的所有字段。请在这里阅读更多信息。为什么不必要的重复,
$和:[{$ne:{$ne:{$id:{$nin:[“ID1”,“ID2”,“ID3”},{$nin:{$nin:[“ID4”,“ID5”,“ID6”}},
可以是
{$nin:[“SOME\id”,“ID1”,“ID2”,“ID3”,“ID4”,“ID5”,“ID6”},
,很好的一点,我想这是我可以开始的初步优化。索引如何?这取决于几个因素,如运行查询的频率、预期的查询类型、读写比、系统上的可用内存量等,因为索引会带来写性能成本,但比频繁查询大数据集的成本更划算。考虑应用程序中每个查询的相对频率,以及查询是否对索引进行了验证。@ CrIDAM预计上述查询的读取量大于写入量,因此我认为这是索引的一个很好的用例。你认为以下是正确的索引吗:{u id:1,年龄:1,性别:1,位置:1,工作:1,注册完成:1}位置已被索引为2d\u Sphere。我相信索引将大大提高查询性能,因为它包含查询扫描的所有字段。在这里阅读更多关于它的信息。