2015-03-28 2 views
0

Я использую MongoDB 2.6.8. Согласно $maxTimeMS reference, эти два запроса должны вести себя одинаково:

> db.collection.find({}).maxTimeMS(100) 
> db.collection.find({}, {$maxTimeMS: 100}) 

Первый запрос делает именно то, что я хочу, но второй запрос ограничивает только возвращает идентификаторы объектов документов. Я пытался увеличить $ maxTimeMS до 100000000, и никаких изменений в поведении не произошло.

Почему я получаю разные результаты для этих двух команд?

ответ

1

Найдено bug in the documentation.

Причина, по которой db.collection.find({}, {$maxTimeMS: 100}) возвращает только _id каждого объекта происходит потому, что MongoDB интерпретирует {$maxTimeMS: 100} часть запроса как projection.

Поэтому он думает, что вы хотите увидеть все документы, и вы хотите увидеть поля _id и поле $maxTimeMS. Конечно, ни один из ваших документов не имеет поля $maxTimeMS, поэтому они отображают только _id.

Надлежащим образом выполнить запрос, который вы хотите без ярлыка:

db.collection.find({ $query: {}, $maxTimeMS: 100 }) 
Смежные вопросы