Я работаю в Python, используя базу данных Монго.Я использую pymongo 3.6 для создания текстового индекса по нескольким полям и выполнения поиска без учета регистра, но у меня возникли проблемы.
Я создаю текстовый индекс, используя
text_index_name = db_collection.create_index([("name", TEXT),
("summary", TEXT)],
name = 'text_search_index')
Затем я пытаюсь выполнить поиск без учета регистра, используя:
name = "SomeTerm"
db_collection.find({"$text":{"$search":{
"$regex":re.compile(name, re.IGNORECASE)}},
})
Это возвращает следующую ошибку:
"$ search" имел неправильный тип.Ожидаемая строка, найденный объект
Я пытался использовать параметры сортировки, сначала создав текстовый индекс без учета регистра
text_index_name = db.collection.create_index(
[("name", TEXT),("summary", TEXT)],
collation=Collation(
locale="en",
caseLevel=False,
caseFirst="off",
strength=2,
numericOrdering=True,
alternate="non-ignorable",
maxVariable="space",
backwards=True),
name = 'text_search_index')
, но получаю следующее:
Тип индекса 'text' не поддерживает параметры сортировки:
{locale: "en", caseLevel: true, caseFirst: "off", сила: 5, numericOrdering: true, альтернатива: "не игнорируется", maxVariable:" пробел ", нормализация: ложь, назад: true, версия:" 57.1 "}
Я видел другие посты, где регулярное выражение используется успешно, но те искали строку водно поле, подобное приведенному ниже:
db_collection.find_one({"summary":re.compile("some_term", re.IGNORECASE)})
Это также работает для меня, но я не могу использовать это с $ search