2015-07-20 56 views
2

作爲mongodb世界中的新手我嘗試在集合中複製mongo文檔時遇到了麻煩。 複製我的意思是我想複製舊的文檔到一個新的_id字段以及更改一些字段的值。如何使用java驅動程序框架在集合中複製MongoDB文檔

mongodb java驅動程序是我的操作環境。

有沒有人已經這樣做?

+0

是否要通過添加一些新字段或更改現有字段的值來更新集合中的現有文檔? – codiacTushki

回答

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" } 
+0

非常感謝CB, 我從mongodb的控制檯得到序列,也許把它帶回到一個java程序中,它可以通過聽起來像這樣的序列來解決: 找到文檔,更改_id(以及其他),然後插入。我渴望像複製(從,到)的API,但從來沒有想過我會嘗試。 – Massimo

0

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

只是加載到光標的文檔複製/克隆或東西然後

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

它看起來工作!

相關問題