1

我猜是一个容易的。在 mongo shell 上执行时:

db.topic.find({"user_id":ObjectId("52e39be16700006700d646ad"), "post_id":null})

它将列出 post_id 为空或不存在的所有主题。这工作正常。

但是,当使用 Scala 代码时,我尝试以下不起作用:

val cursor = db("topic").find(
  BSONDocument("user_id" -> user.id),
  BSONDocument("post_id" -> null)).cursor[Topic]
cursor.collect[List]()

基本上我必须更改条件 BSONDocument("post_id" -> null)。但是怎么做?

非常感谢!马塞尔

4

1 回答 1

3

在 mongo shell 查询中,您有一个定义查询子句的 JSON 文档,但在 Scala 代码中,您有 2 个 JSON 文档,因此第二个文档定义投影,就像在 Mongo shell 中一样。这是def find[S, P](selector: S, projection: P)... 文档。您需要从两个文档中创建一个包含两个字段的文档,如下所示:

val cursor = db("topic").find(
  BSONDocument("user_id" -> user.id, "post_id" -> null)).cursor[Topic]
cursor.collect[List]()
于 2014-01-31T00:05:54.217 回答