在MongoDB中複製一個文檔好吧,我想這是一個愚蠢的問題,可能有一個簡單的答案。使用一個新的_id
如何在MongoDB中複製文檔,更改新文檔的_id?
成像,你有原始文件:
> var orig = db.MyCollection.findOne({_id: 'hi'})
,現在我想用_id「再見」集合中的另一個文檔。
在MongoDB中複製一個文檔好吧,我想這是一個愚蠢的問題,可能有一個簡單的答案。使用一個新的_id
如何在MongoDB中複製文檔,更改新文檔的_id?
成像,你有原始文件:
> var orig = db.MyCollection.findOne({_id: 'hi'})
,現在我想用_id「再見」集合中的另一個文檔。
只需更改ID並重新插入即可。
> db.coll.insert({_id: 'hi', val: 1})
> var orig = db.coll.findOne({_id: 'hi'})
> orig._id = 'bye'
bye
> db.coll.insert(orig)
> db.coll.find()
{ "_id" : "hi", "val" : 1 }
{ "_id" : "bye", "val" : 1 }
您可以給複製文檔一個新的ObjectId。在蒙戈外殼
var copy = db.collection.findOne();
for (var i = 0; i< 30; i++){
copy._id = new ObjectId();
db.collection.insert(copy);
}
有點起色的@ 689響應
var copy = db.collection.findOne({},{_id:0});
for (var i = 0; i< 30; i++){
db.collection.insert(copy);
}
這可能會導致:「E11000重複鍵錯誤索引' – 2015-06-27 00:36:52
我不明白。 每個插入創建一個新的和唯一的_id。 – pykiss 2015-06-29 09:01:43
導致「E11000重複鍵錯誤索引」 – 2016-06-13 04:52:08
您可以使用下面的代碼:使用單線
運行:
db.support_data_cache.find({"_id" : ObjectId("5a4e47e0a21698d455000009")}).forEach(function(doc){var newDoc = doc; delete newDoc._id; db.support_data_cache.insert(newDoc); })
理解的結構格式:
db.collectionName.find({"_id" : ObjectId("5a4e47e0a21698d455000009")}).forEach(function(doc){
var newDoc = doc;
delete newDoc._id;
db.collectionName.insert(newDoc);
})
如果要克隆行,但沒有明確地輸入一個新的ID,只是在做插入命令之前刪除「_id」屬性:刪除orig._id – 2017-02-17 11:41:39