繁体   English   中英

如何制作BSON文档的克隆(类似于Json)?

[英]How to make a clone of a BSON Document (similar to Json)?

对于我的项目,我将在新用户注册时创建一个新的BSON文档(用于MongoDB),但是,不是创建一个新的BSON文档并为每个新用户附加所有默认值(例如,创建一个新文档,附加对于所有统计信息(例如游戏时间,杀戮,死亡,胜利,损失)为0,我决定创建一个包含所有这些默认值的Document模板,希望克隆该模板并插入新的用户名,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,因为Document恰好是从Map派生的。

Document clonedDoc = new Document(originalDoc);

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM