gpt4 book ai didi

java - 如何克隆 BSON 文档(类似于 Json)?

转载 作者:行者123 更新时间:2023-12-02 01:44:00 25 4
gpt4 key购买 nike

对于我的项目,当新用户注册时,我将创建一个新的 BSON 文档(用于 MongoDB),而不是创建一个新的 BSON 文档并为每个新用户附加所有默认值(例如,创建一个新的 BSON 文档)文档,将 0 附加到所有统计数据,例如游戏时间、杀戮、死亡、获胜、失败),我决定创建一个文档模板,其中包含所有这些默认值,希望克隆该模板并插入新用户名, id 和地址 - 这会更有效。

private static Document getDefaultPlayerDocument() {
Document player = new Document();
player.append(DBKey.PLAYTIME.getKey(), 0);
player.append(DBKey.LASTSEEN.getKey(), "Online");
player.append(DBKey.RANK.getKey(), Group.DEFAULT.asString());
player.append(DBKey.EXPIRY.getKey(), "null");
player.append(DBKey.KILLS.getKey(), 0);
player.append(DBKey.DEATHS.getKey(), 0);
player.append(DBKey.WINS.getKey(), 0);
player.append(DBKey.LOSSES.getKey(), 0);
player.append(DBKey.SCORE.getKey(), 0);
return player;
}

这里是创建默认文档的代码,已存储。

但是,我正在寻找一种在需要时克隆此文档的方法,例如

新用户加入,ID为5,名为Archie,创建了模板的克隆,名称更改为Archie,ID更改为5。

我尝试查看 .clone() 方法,但似乎不存在。

有什么帮助吗?

最佳答案

对于一个简单的文档(如您的示例),只需使用 Document(Map<String, Object>) 创建一个新文档构造函数,如Document恰好源自Map .

Document clonedDoc = new Document(originalDoc);

但请注意,这只会创建一个新的“第一级”,其中所有现有子文档将是相同对象,即不是原始文档的副本子文档。

深度克隆最简单的方法是编码为 json 并从那里解析:

Document clonedDoc = Document.parse(originalDoc.toJson());

关于java - 如何克隆 BSON 文档(类似于 Json)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53974297/

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