Мне не удалось воспроизвести проблему, возможно, из-за того, что мы используем разные версии MongoDB и / или NoRM. Однако вот некоторые шаги, которые могут помочь вам найти источник нечетких результатов.
Включите профилирование с помощью оболочки MongoDB:
> db.setProfilingLevel(2)
- Запустите ваш код еще раз.
- Установить уровень профилирования обратно на 0.
Просмотр выполненных запросов:
> db.system.profile.find()
Информация о профилировании должна выглядеть примерно так:
{
"ts" : "Wed Dec 08 2010 09:13:13 GMT+0100",
"info" : "query test.program ntoreturn:2147483647 reslen:175 nscanned:3 \nquery: { query: { Titles.Description: { $in: [ \"House\", \"Glee\", \"30 Rock\" ] } } } nreturned:1 bytes:159",
"millis" : 0
}
Фактический запрос находится в свойстве info
и должен быть:
{ Titles.Description: { $in: [ "House", "Glee", "30 Rock" ] } }
Если ваш запрос выглядит иначе, то проблема в драйвере NoRM. Например, если NoRM преобразует ваш код в следующий запрос регулярного выражения, он выполнит сопоставление подстроки:
{ Titles.Description: { $in: [ /House/, /Glee/, /30 Rock/ ] } }
Я сам использовал NoRM, но я не сталкивался с настройкой, чтобы контролировать это. Возможно, вы используете другую версию, которая поставляется с такой функциональностью.
Если ваш запрос не отличается от того, каким он должен быть, попробуйте запустить запрос из оболочки. Если это все еще дает нечеткие результаты, то мы определенно используем разные версии MongoDB;)