foo: {$ gt: "A", $ lt: "Z"}; Как мне написать это в драйвере scala? - PullRequest
0 голосов
/ 05 апреля 2019
collection.find({foo: { $gt: "A", $lt: "Z"}});

Как мне написать это в Filters DSL в MongoDB Scala Driver ?

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

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

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

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

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

1 Ответ

4 голосов
/ 05 апреля 2019

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

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"}}
...