используя $ in в запросе find () в casbah - PullRequest
3 голосов
/ 05 августа 2011

Я пытаюсь использовать жидкие запросы Касбы в find ().

Мои данные таковы:

{ "_id" : ObjectId("4d7b26efc58bf2b18f14d9cd"), "srcID" : [ "/m/05zppz" ], "relation" : [ "/location/location/people_born_here" ], "dstID" : [ "/m/06sfnt9" ] }
{ "_id" : ObjectId("4d7b26efc58bf2b19014d9cd"), "srcID" : [ "/m/05zppz" ], "relation" : [ "/location/location/people_born_here" ], "dstID" : [ "/m/06fqp8" ] }
{ "_id" : ObjectId("4d7b26efc58bf2b19114d9cd"), "srcID" : [ "/m/05zppz" ], "relation" : [ "/location/location/people_born_here" ], "dstID" : [ "/m/06_7xfd" ] }

Я написал следующий код для запроса:

val srcIDs:List[String] = List("/m/05zppz", "/m/06sfnt9")
val query = "srcID" $in srcIDs

сегмент кода не компилируется и сообщает об этой ошибке:

error: value $in is not a member of java.lang.String
query = ("srcID" $in srcIDs)

Документация casbah имеет вышеуказанный синтаксис для $ in, но, похоже, он не работает. Как заставить $ in работать запрос? На самом деле, я не мог заставить работать любой жидкий запрос с DSL Casbah, и они не смогли выдать ту же ошибку. Пожалуйста, помогите!

Ответы [ 2 ]

4 голосов
/ 05 августа 2011

Проблема в том, что $in не является методом, определенным для строк. Скорее всего, Casbah определяет неявное преобразование из String объектов в экземпляры класса, которые содержат метод $in. Неявное преобразование должно быть import введено в область видимости, прежде чем его можно будет использовать.

Не могли бы вы указать нам документацию Casbah, которая вводит метод $in? Вот где мы найдем то, что нужно импортировать.

(Для экспертов: разве $ не должен быть зарезервирован для полей, генерируемых компилятором?)

3 голосов
/ 05 августа 2011

Я исправил это! Ваш ответ был очень полезным. Я пропустил оператор импорта, необходимый для неявного преобразования, и, следовательно, он рассматривал его как строку.

Я включил import com.mongodb.casbah.Imports._, и теперь он работает как шарм. Спасибо за подсказку!

...