首页 > 解决方案 > foo: { $gt: "A", $lt: "Z"}; 我如何在 scala 驱动程序中写这个?

问题描述

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

如何在MongoDB Scala 驱动程序的过滤器DSL 中编写这个?

我知道我会写

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

但这相当于

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

这对我来说似乎不那么优雅。

标签: mongodbscala

解决方案


驱动程序将在您的情况下合并过滤子句值

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

推荐阅读