MongoDB hint () завершается ошибкой - не уверен, что это так, потому что индекс все еще индексирует - PullRequest
0 голосов
/ 07 февраля 2019

В сеансе SSH 1 я выполнил операцию по созданию частичного индекса в MongoDB следующим образом:

db.scores.createIndex(
...                       { event_time: 1, "writes.k": 1 },
...                       { background: true,
...                         partialFilterExpression: {
...                           "writes.l_at": null,
...                           "writes.d_at": null
...                         }});

Создание индекса довольно велико и длится около 30+ минут.Пока он еще работает, я начал сеанс SSH 2.

В сеансе 2 SSH для кластера я описал индексы для своей коллекции scores, и похоже, что она уже есть ...

db.scores.getIndexes()
[
 ...,
  {
    "v" : 1,
    "key" : {
        "event_time" : 1,
        "writes.k" : 1
    },
    "name" : "event_time_1_writes.k_1",
    "ns" : "leaderboard.scores",
    "background" : true,
    "partialFilterExpression" : {
        "writes.l_at" : null,
        "writes.d_at" : null
    }
 }
]

При попытке сосчитать с подсказкой на этот индекс я получаю сообщение об ошибке ниже:

db.scores.find().hint('event_time_1_writes.k_1').count()
2019-02-06T22:35:38.857+0000 E QUERY    [thread1] Error: count failed: {
"ok" : 0,
"errmsg" : "error processing query: ns=leaderboard.scoresTree: $and\nSort: {}\nProj: {}\n planner returned error: bad hint",
"code" : 2,
"codeName" : "BadValue"
} : _getErrorWithCode@src/mongo/shell/utils.js:25:13
DBQuery.prototype.count@src/mongo/shell/query.js:383:11
@(shell):1:1

Никогда не видел этого ниже, но нужно подтверждение, чтобы проверить, происходит ли сбой, потому что индексация все еще выполняется?

Спасибо!

...