Mongo - Как индексировать фильтр с помощью сортировки - PullRequest
0 голосов
/ 03 октября 2018

Я индексирую этот монго-запрос, но он не работает.

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 голосов
/ 03 октября 2018

Вы используете mongo метод оболочки 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"
    }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...