2012-01-13 8 views
2

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

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

и с

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

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

Каким образом можно сказать, что casbah ищет часть строки?

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

С наилучшими пожеланиями, Оливер

+0

Покажите свои данные. –

+0

Вот часть моих данных, которые я запрашиваю: case class Machine (_id: ObjectId = new ObjectId, имя_сервера: Option [String], – Odo

+0

Хорошо, что я исправил его. 'val query = "serverName" - > regexp.r ' – Odo

ответ

1

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

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

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

val regexp = ("""/"""+serverName+"""/i""").r 
find(MongoDBObject("serverName" -> regexp)) 
+1

Я думаю, вам не нужно предоставлять/es. Для меня это теперь работает с '". * "+ ServerName +". * "И" val result = find (MongoDBObject ("serverName" -> regexp.r)) ' – Odo

 Смежные вопросы

  • Нет связанных вопросов^_^