首页 文章

如何复制mongodb文件,然后更新字段的值

提问于
浏览
0

我想复制一个现有的文档,并给它一个新的objectID,然后更新一个新添加的文档的字段 .

目前,我使用“find”获取文档集合,并迭代列表,然后使用insertOne和updateOne插入新文档并更新字段值 . 但似乎更新的字段值属于具有旧对象id的文档 . 并且我希望字段值属于具有新ObjectID的文档更新 .

myDocList = collection.find(new Document("track", trackName));  

for (Document document : myDocList) {
    collection.insertOne(new Document(document));
    collection.updateOne(new Document("track", trackName), new Document("$set", new Document("track", newTrackName)));
     System.out.println(document);
}

1 回答

  • 0

    为什么不在插入之前更改新文档?

    for (Document document : myDocList) {
        Document doc = new Document(document);
        doc.setTrackName(newTrackName); // or doc.put("track", newTrackName); if your doc implements Map
        collection.insertOne(doc);
        System.out.println(document);
    }
    

    当然updateOne方法将使用该trackName更新第一个找到的记录 . 如果需要保存逻辑,则需要以某种方式保存插入的新文档的objectId . 然后通过objectId调用update对象 . 就像是:

    for (Document document : myDocList) {
        collection.insertOne(new Document(document)).getObjectId(); //save this value
        //I don't know exactly which mongo driver do you use
        collection.updateOne(new Document("_id", savedObjId), new Document("$set", new Document("track", newTrackName)));
         System.out.println(document);
    }
    

相关问题