Я использую Meteor для запроса коллекции MongoDB. В запросе в настоящее время используется неправильный индекс. С необработанным Mongo можно передать запрос подсказку. использовать указанный индекс. Есть ли способ сделать это напрямую из Meteor?

3
Andrew F 26 Фев 2015 в 02:20

2 ответа

Лучший ответ

Это можно сделать прямо внутри Meteor, используя синтаксис $ query: $ hint:. Стоит отметить, что использование опции сортировки вместо $ orderBy: кажется, вызывает у Meteor жалобу.

Примере:

Meteor.collection.find( 
    {  $query:{
        //query goes here
    }, $hint: {
        "indexField1": 1, "indexField2": 1, "indexField3": -1
    }, $orderBy:{
        "createdAt": -1 //sorting option
    }
},
    {limit:30} //sort here makes Meteor complain
);

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

4
challett 18 Июн 2015 в 13:25

Беглого взгляда на код метеорита-монго-варпера я его не вижу. Однако для meteor доступен весь драйвер node.js (см. Аналогичную проблему с findAndModify https: // github.com/meteor/meteor/issues/1070).

И подсказка определенно доступна в драйвере node.js, так что, возможно, создание собственной оболочки было бы решением? Мне еще не приходилось переходить этот мост, поэтому я не могу предложить более явного решения, но это может быть хорошей отправной точкой (и отличной идеей для пакета!).

1
Matt K 26 Фев 2015 в 16:43