我是新來的斯卡拉,我想創建一個自定義的BsonDocument。據我在文檔here中讀到,有這種方法append(String key, BsonValue value)
,它在內部調用put
方法,我試圖使用它。斯卡拉/ Java的BsonDocument append不能正常工作
問題是,當我追加兩個以上的字段時,只有最後兩個字段被追加。例如,如果我有這樣的代碼:
var doc = new BsonDocument();
val mapAccounts = user.accounts.map(e => new BsonString(e))
doc.append("$set", new BsonDocument("userName", new BsonString(user.userName)))
.append("$set", new BsonDocument("color", new BsonString(user.color)))
.append("$addToSet", new BsonDocument("accounts", new BsonDocument("$each", new BsonArray(mapAccounts.toList.asJava))))
println(s"The Bson user is $doc")
在這種情況下,我得到這樣的輸出:
The Bson user is { "$set" : { "color" : "teal" }, "$addToSet" : { "accounts" : { "$each" : ["1"] } } }
正如你所看到的,用戶名不是被追加。如果我更改順序,它會重複最後兩個附加元素。
我已經嘗試直接使用put
,但仍得到相同的結果。也試圖像doc = doc.append(...)
一樣單獨附加,並且仍然相同。
我在這裏錯過了什麼?