Mongo-如何使用排序索引过滤器

时间:2018-10-03 07:08:34

标签: mongodb mongodb-query

我正在为该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)建立了索引,但未使用索引

您有什么办法编制索引吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您正在运行mongo shell方法 db.collection.find() ,该方法需要两个参数queryprojection文档,即正确的方法应该是< / p>

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"
    }
);