Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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使用BasicCursor而不是索引_Mongodb - Fatal编程技术网

如何强制mongodb使用BasicCursor而不是索引

如何强制mongodb使用BasicCursor而不是索引,mongodb,Mongodb,我有一个索引为“name”的集合 > db.search.getIndexes() [ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 1, "key" : { "name" : 1 }, "name" : "name_

我有一个索引为“name”的集合

> db.search.getIndexes()
[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_"
    },
    {
        "v" : 1,
        "key" : {
            "name" : 1
        },
        "name" : "name_1"
    }
]
> 
我的问题之一是

> db.collection.find({name: {$regex: '^string'}}).explain()
它使用索引

{
    "cursor" : "BtreeCursor name_1 multi",
    "isMultiKey" : false,
    "n" : 25,
    "nscannedObjects" : 25,
    "nscanned" : 3247,
    "nscannedObjectsAllPlans" : 25,
    "nscannedAllPlans" : 3247,
    "scanAndOrder" : false,
    "indexOnly" : false,
    "nYields" : 0,
    "nChunkSkips" : 0,
    "millis" : 366,
    "indexBounds" : {
        "name" : [
            [
                "",
                {

                }
            ],
            [
                /string/,
                /string/
            ]
        ]
    },
    "server" : "..."
}
我已经知道使用BasiCursor会更快

> db.search.find({name: {$regex: 'string'}}).explain()
{
    "cursor" : "BasicCursor",
    "isMultiKey" : false,
    "n" : 27,
    "nscannedObjects" : 3385,
    "nscanned" : 3385,
    "nscannedObjectsAllPlans" : 3385,
    "nscannedAllPlans" : 3385,
    "scanAndOrder" : false,
    "indexOnly" : false,
    "nYields" : 0,
    "nChunkSkips" : 0,
    "millis" : 20,
    "indexBounds" : {

    },
}

如何告诉Mongodb在不删除索引的情况下使用BasicCursor?

您可以通过
$natural
强制查询优化器不使用任何索引:

>db.collection.find({name:{$regex:'^string'}).hint({$natural:1})
可用于强制使用特定索引。也许它还可以通过向索引传递一个空对象来强制忽略索引?