【发布时间】:2013-10-29 12:11:44
【问题描述】:
我有一个使用playframework 2.2.0 和play2-reactivemongo 0.10.0-SNAPSHOT 设置的项目。我想通过 id 查询一些文档,方式类似于:
def usersCollection = db.collection[JSONCollection]("users")
val ids: List[String] = /* fetched from somewhere else */
val query = ??
val users = usersCollection.find(query).cursor[User].collect[List]()
作为我尝试的查询:
Json.obj("_id" -> Json.obj("$in" -> ids)) // 1
Json.obj("_id.$oid" -> Json.obj("$in" -> ids)) // 2
Json.obj("_id" -> Json.obj("$oid" -> Json.obj("$in" -> ids))) // 3
第一个和第二个返回空列表,第三个失败并出现错误assertion 10068 invalid operator: $oid。
【问题讨论】:
-
为什么不
Json.obj("_id" -> Json.obj("$in" -> ids.map(BSONObjectID(_))))? -
@Dom 因为你必须在隐式范围内拥有
Write[BSONObjectID]的实例,而play-reactivemongo只提供部分实例。此外,写一个感觉效率不高,因为在这种情况下你将转换BSONValue->JsValue->BSONValue。 -
好的,明白你的意思,谢谢。
标签: mongodb scala playframework playframework-2.2 reactivemongo