MangoDB с использованием шаблона JavaScript с оператором $in

Пытаюсь создать запрос MongoDB с драйвером Pymongo, который ищет в базе данных некоторые породы собак, но мне нужно выполнить сопоставление с образцом из-за разного качества данных. Я знаю, что не могу использовать Regex в запросе в стиле $in, поэтому я использую шаблоны JS.

У меня пока так:

df = shelter.getRecords({
    "breed": {"$in": [/labrador/i, /chesa/i, /newfound/i]}
    })

Но я получаю синтаксические ошибки. Кажется, команда работает в оболочке Mongo .... это ограничение Pymongo?

Вы пробовали использовать pymongo's bson.regex.Regex?

rickhg12hs 06.10.2022 23:12

Я попробовал и придумал гибридный подход.

Brandon Hobbs 12.10.2022 03:52
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать "$regex" вот так.

N.B.: Ваш pymongo фильтр запроса может быть python словарем, например {'breed': {'$regex': '(labrador)|(chesa)|(newfound)', '$options': 'i'}}.

db.shelter.find({
  "breed": {
    "$regex": "(labrador)|(chesa)|(newfound)",
    "$options": "i"
  }
})

Пример вывода:

[
  {
    "_id": 21,
    "breed": "Chesapeake Retriever"
  },
  {
    "_id": 80,
    "breed": "Newfoundland"
  }
]

Попробуйте на mongoplayground.net.

Спасибо, я использовал очень похожий подход!

Brandon Hobbs 12.10.2022 03:53

В конце концов, это был мой гибридный подход...

           labRegex = re.compile(".*lab.*", re.IGNORECASE)
           chesaRegex = re.compile(".*chesa.*", re.IGNORECASE)
           newRegex = re.compile(".*newf.*", re.IGNORECASE)
           
           df = pd.DataFrame.from_records(shelter.getRecordCriteria({
               '$or':[ #Regex isn't allowed in an $in helper so use $or
                   {"breed": {'$regex': newRegex}}, #pass the regex to the filter
                   {"breed": {'$regex': chesaRegex}},
                   {"breed": {'$regex': labRegex}},
               ],
               "sex_upon_outcome": "Intact Female",
               "age_upon_outcome_in_weeks\": {"$gte":26.0, "$lte":156.0}
           }))

Другие вопросы по теме