Javascript 本机node.js驱动程序的mongo hint命令

Javascript 本机node.js驱动程序的mongo hint命令,javascript,node.js,mongodb,mongodb-query,Javascript,Node.js,Mongodb,Mongodb Query,两个相同的查询在mongo shell和native node.js驱动程序中提供了不同的记录: collection.find(query).limit(1).hint(hint).toArray collection.find(query).limit(1).hint(hint).toArray 我认为在native node.js中,驱动程序提示被忽略,并且得到了批准: 当我在node.js驱动程序中从查询中删除提示时,结果与我在node.js驱动程序中使用提示时得到的结果相同: co

两个相同的查询在mongo shell和native node.js驱动程序中提供了不同的记录:

collection.find(query).limit(1).hint(hint).toArray

collection.find(query).limit(1).hint(hint).toArray
我认为在native node.js中,驱动程序提示被忽略,并且得到了批准:

当我在node.js驱动程序中从查询中删除提示时,结果与我在node.js驱动程序中使用提示时得到的结果相同:

collection.find(query).limit(1).toArray 

因此,在node.js mongo本机驱动程序中使用提示可能有特殊的规则?如何使用它?

节点驱动程序中实际上没有实现
.hint()
方法。为此,请在以下位置为光标创建提供“选项”:

collection.find({},{“hint”:{“a”:-1}).limit(1).toArray(函数(err,docs){
如果实际匹配指定的索引,则您将获得按所选索引顺序返回的文档。可能是一个较长的示例:

var async=require(“async”),
mongo=require(“mongodb”),
MongoClient=mongo.MongoClient;
MongoClient.connect('mongodb://localhost/test,函数(err,db){
异步瀑布(
[
函数(回调){
db.collection('asample',函数(err,collection){
如果(错误)抛出错误;
回调(err,collection);
});
},
函数(收集、回调){
collection.remove(函数(err,removed){
如果(错误)抛出错误;
回调(err,collection);
});
},
//
函数(收集、回调){
async.eachSeries(
[
{“a”:1},
{“a”:2}
],
函数(项,回调){
collection.insert(项,函数(err,num){
如果(错误)抛出错误;
回调();
});
},
功能(err){
如果(错误)抛出错误;
回调(err,collection);
}
);
},
函数(收集、回调){
ensureIndex({“a”:-1},函数(err,index){
如果(错误)抛出错误;
console.log(“索引:\n%s”,索引);
回调(err,collection);
});
},
函数(收集、回调){
collection.find({},{“hint”:{“a”:-1})
.limit(1).toArray(函数(错误、文档){
如果(错误)抛出错误;
log(“文档:\n%s”,JSON.stringify(文档,未定义,4));
回调();
});
}
],
功能(err){
控制台日志(“完成”);
db.close();
}
);
});
其中,按照反向索引顺序,首先返回值“2”

实际上,只要“查询”或
.sort()
规范提到要使用的正确索引,就不需要应用“提示”。因此,这是更好的方法