Как я могу убедиться, что мой запрос mon go использует индексы - PullRequest
0 голосов
/ 17 июня 2020

Я использую официальный драйвер mongo-driver mon go для Go. У меня ниже указатель по коллекции,

// 1
[
    {
        "v": NumberInt("2"),
        "key": {
            "_id": NumberInt("1")
        },
        "name": "_id_",
        "ns": "cgrates.cdrs"
    },
    {
        "v": NumberInt("2"),
        "key": {
            "setuptime": NumberInt("-1"),
            "account": NumberInt("1"),
            "runid": NumberInt("1")
        },
        "name": "setuptime_NumberInt(\"-1\")_account_NumberInt(\"1\")_runid_NumberInt(\"1\")",
        "ns": "cgrates.cdrs"
    }
]

А ниже выглядит мой фильтр в коде golang.

filter := bson.M{"setuptime": bson.M{"$gt": startTime, "$lt": endTime}, "account": account, "runid": "*default", "originid": callId}

Поскольку у меня есть составной индекс, я хотел, чтобы драйвер golang отправлял запрос точно в том же порядке, который я указал выше.

Но поскольку фильтр - это карта, то golang не дает гарантии его целостности. В конце концов, я вижу, что мой golang драйвер отправляет запросы не по порядку.

B....................K....update.....cdrs..lsid......id............A\.2.2......$db.....cgrates.......updates......q......account.....5ee919c63181373a24762676..runid.....*default..originid.%...161060e7-2a37-1239-7684-560001951c52..setuptime......$gt..)..r....$lt.....r......u......$set.#....extrafields.Paid.....0.00125....

Пожалуйста, проверьте, что запрос отправляется на пн go, вы можете заметить, что время установки было последним. В фильтре он был на первой позиции.

Как сохранить порядок запросов без изменений или как делать запросы на основе индексов? Mongodb обрабатывает это автоматически?

1 Ответ

1 голос
/ 17 июня 2020

Вы можете проверить, что индексы используются, используя метод оболочки объяснение mongo.

Вы также можете указать поля в другом порядке в оболочке mongo и убедиться, что индексы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...