$和in play mongo with play framework 2.6

时间:2018-05-15 17:10:05

标签: scala playframework reactivemongo

我正在使用scala的play framework v2.6,我使用reactivemongo作为mongodb的驱动程序,我的问题是我不知道如何检索具有两个值之间的值的对象。在我的例子中我有这个案例类:

case class Card (id : String, creationDate: Date)

我想检索两个日期之间有创建日期的卡片,所以我使用了这个查询:

val query = BSONDocument(
         "$and" -> BSONDocument(
         "creationDate" -> Json.obj("$gte" ->startDate),
         "creationDate" -> Json.obj("$lte" ->endDate))
         )

但这会输出以下错误:

A server error occurred DatabaseException['Can't canonicalize query:       
BadValue and needs an array' (code = 17287)]

1 个答案:

答案 0 :(得分:0)

根据mongo documentation$and运算符需要一个数组:

val query = BSONDocument(
  "$and" -> BSONArray(List(
    BSONDocument("creationDate" -> Json.obj("$gte" ->startDate)),
    BSONDocument("creationDate" -> Json.obj("$lte" ->endDate))
  ))
)