gpt4 book ai didi

java - Scala/Java BsonDocument 追加无法正常工作

转载 作者:行者123 更新时间:2023-12-02 02:59:02 31 4
gpt4 key购买 nike

我是 scala 新手,我正在尝试创建自定义 BsonDocument。据我在文档 here 中读到,有一个方法 append(String key, BsonValue value) 在内部调用 put 方法,我正在尝试使用它。

问题是,当我追加两个以上的字段时,只有最后两个被追加。例如,如果我有这样的代码:

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(...) 那样单独附加,但仍然相同。

我在这里缺少什么?

最佳答案

你不能有两个 $set (BSONDocument 基本上是一个键值映射,再次附加相同的键只会重置它,就像 Map.put会)。

你想要的是

"$set" : { 
"color" : "teal",
"username": "Jim"
}

关于java - Scala/Java BsonDocument 追加无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42639068/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com