MongoChef Query IntelliShell и QueryBuilder показывают разные результаты
Следующий запрос, созданный и запущенный из Query Builder, показывает 10 записей результатов. Если я запускаю тот же код в IntelliShell, я ничего не получаю? Что мне не хватает?
Более простой снова работает.
db.user.find({
em: {
$regex: '.*\Qdirk\E.*',
$options: 'i'
}
})
Более упрощенный, подобный этому, снова работает. Есть ли у MongoChef проблемы с $regex ...
db.user.find({em: "dirk@test.com"})
1 ответ
Обратите внимание, что вы столкнулись с очень особенным случаем здесь. Использование \Q ... \E
требует, чтобы регулярное выражение задавалось в виде косой черты, а не в одинарных кавычках. То есть запрос должен быть db.user.find({ em: { $regex: /.*\Qdirk\E.*/, $options: 'i'}})
или просто db.user.find({ em: /.*\Qdirk\E.*/i })
,
Имейте в виду, что это не проблема в MongoChef, но сама оболочка MongoDB требует использования формы косой черты, когда \Q
а также \E
используются в регулярном выражении, а IntelliShell MongoChef основана на оболочке MongoDB.
В то время как представление коллекции и Query Builder в MongoChef будут успешно обрабатывать любую форму, текст запроса, созданный графическим Query Builder в MongoChef, был улучшен в следующем выпуске 3.4.0, чтобы всегда создавать форму косой черты, которая будет давать согласованные результаты, если Затем запрос копируется и вставляется в IntelliShell или базовую оболочку MongoDB.
Спасибо за использование MongoChef!