2014-01-30 110 views
1

我猜是一個簡單的。在mongo shell上執行時:ReactiveMongo斯卡拉空

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

它將列出post_id爲null或不存在的所有主題。這工作正常。

但是使用Scala代碼時,我嘗試以下不工作:

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

基本上我有改變的條件BSONDocument( 「POST_ID」 - >空)。但是如何?

非常感謝! Marcel

回答

3

在mongo shell查詢中,您有一個定義查詢子句的JSON文檔,但在Scala代碼中您有2個JSON文檔,所以第二個文檔就像在Mongo shell中定義投影一樣。這裏是def find[S, P](selector: S, projection: P)...documentation。你需要做一個單一的文件有兩個字段了你的兩個文檔是這樣的:

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

偉大的答案!謝謝!這適用於我:BSONDocument(「user_id」 - > user.id,「post_id」 - > BSONNull)。 – marcel