Я пытаюсь отфильтровать коллекцию MongoDB с помощью запроса .find()
и запустить текстовый поиск по результатам, чтобы снизить стоимость запроса, но я не могу, по-видимому, иметь возможность связывать команды ,MongoDB объединение поиска с текстовым поиском
Вот что я пытался (это не работает):
db.jobs.find({
"salary.max": {
$gte: 50000,
$lte: 120000
}
}).runCommand("text", {
search: "metal"
})
Я также попытался запрос в обратном порядке, что противоречит цели и не работает.
Есть ли способ связать .runCommand()
с .find()
в MongoDB?
Можете ли вы также связать запрос на основе местоположения (2dsphere) на это? –
@ A.M.K Я не вижу причин, почему это не должно работать. Геопространственные операторы, такие как '$ nearSphere' или' $ geoWithin', являются нормальными операторами фильтров, поэтому вы можете добавить их в свой документ фильтра. И хотя в документации указывается, что каждая коллекция может иметь только * один текстовый индекс * и * один геоиндекс *, он нигде не говорит, что у него не может быть одного из них. – Philipp
Хорошо, спасибо. Пока я ждал ответа, я немного поиграл с ElasticSearch, и похоже, что дополнительные проблемы с кодированием переключения будут стоить того. –