【问题标题】:How to copy a mongodb document inside a collection using java driver framework如何使用 java 驱动程序框架在集合中复制 mongodb 文档
【发布时间】:2015-10-09 19:08:49
【问题描述】:

作为 mongodb 世界的新手,当我尝试在集合中复制 mongo 文档时遇到了麻烦。 要复制,我的意思是我想将旧文档复制到具有新 _id 字段的新文档中,并更改几个字段的值。

mongodb java驱动是我的操作上下文。

有人已经这样做了吗?

【问题讨论】:

  • 您想通过添加一些新字段或更改现有字段的值来更新集合中的现有文档吗?

标签: java mongodb copy driver


【解决方案1】:

您可以将检索到的文档的 _id 设置为新的 ObjectId() 并保存。外壳中的示例:

> db.sample.insert({"docName":"Old Document"});
WriteResult({ "nInserted" : 1 })
> var doc = db.sample.findOne( {"docName":"Old Document"} );
> doc
{ "_id" : ObjectId("55ad11ea8306f3e7da87d62d"), "docName" : "Old Document" }
> doc._id = new ObjectId();
ObjectId("55ad122c8306f3e7da87d62e")
> db.sample.insert(doc);
WriteResult({ "nInserted" : 1 })
> db.sample.find().pretty();
{ "_id" : ObjectId("55ad11ea8306f3e7da87d62d"), "docName" : "Old Document" }
{ "_id" : ObjectId("55ad122c8306f3e7da87d62e"), "docName" : "Old Document" }

【讨论】:

  • 非常感谢 CB,我从 mongodb 的控制台获得了序列,也许为了将它带回一个 java 程序,它可以按如下顺序解决:找到文档,更改 _id(以及一些否则)然后插入。我希望有一些类似于复制(从,到)API 的东西,但没关系我会尝试。
【解决方案2】:

我只是做了我所谓的文件副本:

只需将要复制/克隆的文档或其他内容加载到光标中即可

while (thecursor.hasNext()) { Document doc = thecursor.next(); doc.put(Constants.ID, ObjectId.get().toString()); collection.insertOne(doc); }

它看起来工作!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多