Не удается найти описание в учебнике Casbah (http://mongodb.github.com/casbah/tutorial.html), как писать/обновлять/удалять объекты в MongoDB. Помогите пожалуйста с примерами или подскажите в каких классах искать эти методы. Спасибо!
Scala: Пример использования Casbah для записи/обновления/удаления объектов в MongoDB?
Ответы (2)
Обновленный ответ
Через несколько месяцев после того, как был задан этот вопрос и получен ответ, документация Casbah была обновлена и теперь включает Выполнение операций CRUD. Возможно, этот вопрос/ответ помог этому случиться. Или, возможно, кто-то понял, что не документировать операции CRUD в учебнике по БД было безумно.
Исходный ответ
Чтобы понять, почему руководство по Cashbah не содержит примеров того, как вставлять, обновлять или удалять документы из базы данных MongoDB, лучше всего начать с первого абзаца документации Casbah:
Casbah — это инструментарий Scala для MongoDB. Мы используем термин «набор инструментов», а не «драйвер», поскольку Casbah интегрирует слой поверх официального драйвера mongo-java-driver для лучшей интеграции со Scala. Это отличается от собственной реализации проводного протокола MongoDB, с которой драйвер Java справляется исключительно хорошо. Вместо полного переписывания Casbah использует имплициты и код Pimp My Library для улучшения существующего кода Java.
Casbah — это набор инструментов для расширения драйвера Java. Поэтому необходимо сначала прочитать документацию по драйверу Java, а затем документацию по Casbah, чтобы эффективно использовать Casbah.
Чтобы еще больше мотивировать это предложение, взгляните на то, как Casbah оборачивает некоторые методы из драйвера Java:
trait MongoCollectionBase extends Logging { self =>
...
val underlying: DBCollection
...
def save[A <% DBObject](jo: A) = underlying.save(jo)
...
def update[A <% DBObject, B <% DBObject](q: A, o: B) = underlying.update(q, o)
...
def remove[A <% DBObject](o: A) = underlying.remove(o)
...
Как видно из приведенного выше отрывка, MongoCollection
Casbah является прокси-сервером для DBCollection
драйвера Java. Это предназначено для иллюстрации того, что если что-то не обрабатывается набором инструментов Casbah, оно обрабатывается вызовом драйвера Java.
Ниже приведены ссылки на примеры того, как вставлять, обновлять и удалять документы из базы данных MongoDB с помощью драйвера Java:
- Как вставлять и обновлять документы в базе данных описано здесь;
- Пример того, как удалить документ, доступен здесь.
Теперь, когда вы понимаете, как Casbah соотносится с драйвером Java, портирование этих примеров для использования Casbah должно быть простым.
Я подготовил несколько примеров использования casbah, пока очень простых. Позже добавлю функционал.
https://github.com/talgendler/casbah
object AddressMongoConverter {
def convertToMongoObject(address: Address): DBObject = {
MongoDBObject(
STREET -> address.street,
ZIP_CODE -> address.zipCode,
CITY -> address.city,
COUNTRY -> address.country
)
}
def convertFromMongoObject(db: DBObject): Address = {
Address(
street = db.getAsOrElse[String](STREET, mongoFail),
zipCode = db.getAsOrElse[Int](ZIP_CODE, mongoFail),
city = db.getAsOrElse[String](CITY, "Tel-Aviv"), // slightly different get
country = db.getAsOrElse[String](COUNTRY, "Israel")
)
}
}