mongodb - Mongo - 如何使用排序索引过滤器
问题描述
我正在索引这个 mongo 查询,但它不起作用。
db.getCollection("users").find(
{
"find" : "users",
"filter" : {
"userSetting.url" : "michael.john"
},
"sort" : {
"_id" : -1.0
},
"projection" : {
"userSetting" : 1.0,
"user" : 1.0,
"isOnline" : 1.0
},
"limit" : 1.0,
"singleBatch" : true,
"batchSize" : 1.0,
"returnKey" : false,
"showRecordId" : false,
"lsid" : {
"id" : BinData(4, "JdjijSjxxKahhh7dWf92w==")
},
"$db" : "manager"
}
);
我索引了 user.Setting.url 和 _id (-1) 但它不使用索引
你有什么方法可以索引吗?
谢谢
解决方案
您正在运行 需要两个参数的mongo shell 方法和文档,即正确的方法应该是db.collection.find()
query
projection
db.getCollection("users").find(
{ "userSetting.url" : "michael.john" },
{
"userSetting" : 1.0,
"user" : 1.0,
"isOnline" : 1.0
}
).batchSize(1).sort({ "_id": -1 }).limit(1);
我相信您正在使用助手find
可以发出的命令:db.runCommand()
db.runCommand(
{
"find" : "users",
"filter" : {
"userSetting.url" : "michael.john"
},
"sort" : {
"_id" : -1.0
},
"projection" : {
"userSetting" : 1.0,
"user" : 1.0,
"isOnline" : 1.0
},
"limit" : 1.0,
"singleBatch" : true,
"batchSize" : 1.0,
"returnKey" : false,
"showRecordId" : false,
"lsid" : {
"id" : BinData(4, "JdjijSjxxKahhh7dWf92w==")
},
"$db" : "manager"
}
);
推荐阅读
- reactjs - 使用 React 单击按钮后切换到不同的组件
- sql-server - 在 case 语句中无法将 varchar 转换为二进制
- saml - 签署 SAML 响应和断言之间的 OpenAM 关系
- jquery - 警告:组件渲染函数中可能存在无限更新循环
- apache-spark - Spark客户端内存配置
- elasticsearch - Logstash 错误:拒绝对 [db] 的映射更新,因为最终映射将有超过 1 种类型:[meeting_invities, meetingroom"}}}}
- python - 在多个处理器上运行外部应用程序
- ggplot2 - 如何在 ggplot 中使用 colorRamp 绘制饼图?
- flutter - Flutter CameraException:CameraException(错误 -11803,AVFoundationErrorDomain)
- python - 在 TensorFlow 2.0 中,如何将 TFRecord 数据提供给 keras 模型?