foo: { $gt: «A», $lt: «Z»}; Как мне записать это в драйвер scala?

#mongodb #scala

#mongodb #scala

Вопрос:

 collection.find({foo: { $gt: "A", $lt: "Z"}});
  

Как мне записать это в Filters DSL в драйвере MongoDB Scala?

Я знаю, что могу написать

 and(gt("foo", "A"), lt("foo", "Z"))
  

но это эквивалентно

 collection.find({$and([{foo: {$gt: "A"}}, {foo: {$lt: "Z"}}])});
  

Что кажется мне гораздо менее элегантным.

Комментарии:

1. Вы можете назвать это менее элегантным, но так оно и есть 🙂

Ответ №1:

Драйвер объединит значения предложения фильтра в вашем случае

 import org.mongodb.scala.bson.{BsonDocument, codecs}
import org.mongodb.scala.model.Filters._

object Try extends App {
  var f = and(gt("foo", "A"), lt("foo", "Z"))
  println(f.toBsonDocument(classOf[BsonDocument], codecs.DEFAULT_CODEC_REGISTRY))
}

// output
// {"foo": {"$gt": "A", "$lt": "Z"}}