如何强制 MongoDB 使用 BasicCursor 而不是索引?
mongodbdatabasebig data analytics更新于 2026/2/13 15:07:17
为了避免使用索引,请在 MongoDB 中使用 hint()。让我们创建一个包含文档的集合 −
> db.demo31.createIndex({"StudentFirstName":1});
{
"createdCollectionAutomatically" : true,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
> db.demo31.insertOne({"StudentFirstName":"John"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e174f8fcfb11e5c34d898c1")
}
> db.demo31.insertOne({"StudentFirstName":"Jace"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e174f97cfb11e5c34d898c2")
}
> db.demo31.insertOne({"StudentFirstName":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e174f9ccfb11e5c34d898c3")
}
> db.demo31.insertOne({"StudentFirstName":"James"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e174fa0cfb11e5c34d898c4")
}
借助 find() 方法显示集合中的所有文档 −
> db.demo31.find();
这将产生以下输出 −
{ "_id" : ObjectId("5e174f8fcfb11e5c34d898c1"), "StudentFirstName" : "John" }
{ "_id" : ObjectId("5e174f97cfb11e5c34d898c2"), "StudentFirstName" : "Jace" }
{ "_id" : ObjectId("5e174f9ccfb11e5c34d898c3"), "StudentFirstName" : "Chris" }
{ "_id" : ObjectId("5e174fa0cfb11e5c34d898c4"), "StudentFirstName" : "James" }
以下查询强制 MongoDB 使用 BasicCursor 而不是索引 −
> db.demo31.find({"StudentFirstName": {$regex: '^Ja'}}).hint({ $natural: 1});
这将产生以下输出 −
{ "_id" : ObjectId("5e174f97cfb11e5c34d898c2"), "StudentFirstName" : "Jace" }
{ "_id" : ObjectId("5e174fa0cfb11e5c34d898c4"), "StudentFirstName" : "James" }

