java - 将文档从一个集合复制(如果存在则更新)到另一个集合

标签 java mongodb

我想通过java将文档从一个mongodb集合复制到另一个集合(或更新,如果存在)。

我不想追加现有集合的每个字段,然后插入另一个字段。我怎样才能做到这一点?

这里有两个集合,tempnationaltemp 只有一个集合,我必须将其复制到 national 或更新(如果存在)。

MongoCursor<Document> cursor = db.getCollection("temp").find().iterator();
try {
    Document doc = new Document(cursor.next());
    Document new_doc = new Document("$set",doc);
    doc.append("booking_id",cursor.next().get("booking_id"));
    MongoCursor<Document>  cursor1 = db.getCollection("national").find(doc).iterator();
    Bson filter = Filters.eq("booking_id", args);
    Bson update = Filters.elemMatch("booking_id", filter);
    UpdateOptions options = new UpdateOptions().upsert(true);
    national.updateOne(filter, new_doc, options);
}
finally {
    cursor.close();
}

最佳答案

如果你想用 Doc1 替换 Doc2,你可以使用replaceOne()

replaceOne() 使用替换文档替换集合中与过滤器匹配的第一个匹配文档。

https://docs.mongodb.com/v3.2/reference/method/db.collection.replaceOne/

关于java - 将文档从一个集合复制(如果存在则更新)到另一个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40069760/

相关文章:

java - 如何在 Scala 中获取字符串的最后一个元音及其后面的任何单词?

java - 如何计算我的类(class)中的年份差异?

java - 如何强制子类声明特定的内部类

mongodb - Mongoose 聚合查询在 Jest/Mockgoose 测试中失败,在其他地方有效

node.js - mongoose批量操作

node.js - 在 NodeJS 中将 200'000 行以上的大型 csv 文件插入 MongoDB

java - Android:获取原子时间

java - 使用spring mvc出现奇怪的404错误

mongodb - 数据库错误 MongoDB : disappeared database

mongodb - 从 Azure 应用服务连接到 MongoDB Atlas 集群