Casbah/Salat: Как запросить поле, которое содержит часть строки?

StackOverflow https://stackoverflow.com/questions/8848106

  •  27-10-2019
  •  | 
  •  

Вопрос

Я стараюсь написать запрос с Casbah и Salat, чтобы запросить поле, которое включает в себя части названия. Я пытался использовать подобное регулярное выражение (внутри салатдао):

val regexp = (""".*"""+serverName+""".*""").r
val query = "serverName" -> regexp
val result = find(MongoDBObject(query))

и с

val regexp = ".*"+serverName+".*"

Запись находится в MongoDB, и когда я ищу его с полным именем, оно работает.

Как правильный способ сказать Casbah искать часть строки?

Еще одна вещь, которую я хотел бы исправить, - это конкатенация строки для параметра. Есть ли какой -нибудь способ по умолчанию, чтобы избежать входных параметров с Casbah, поэтому параметр не интерпретируется как команда JavaScript?

С уважением, Оливер

Это было полезно?

Решение

В оболочке MongoDB вы можете найти имена серверов содержит конкретную строку

db.collection.find({serverName:/whatever/i})

У меня нет опыта с Casbah, я считаю, что это должно быть так. Пожалуйста, протестируйте

val regexp = ("""/"""+serverName+"""/i""").r  
find(MongoDBObject("serverName" -> regexp))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top