使用新的\u id在MongoDB中复制文档
好吧,我想这是一个愚蠢的问题,可能有一个简单的答案 如何在MongoDB中复制文档,更改新文档的_id 想象您拥有原始文档:使用新的\u id在MongoDB中复制文档,mongodb,Mongodb,好吧,我想这是一个愚蠢的问题,可能有一个简单的答案 如何在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.
> 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);
}
var copy=db.collection.findOne();
对于(var i=0;i<30;i++){
复制。_id=new ObjectId();
db.收集。插入(副本);
}
对@689响应的一点改进
var copy = db.collection.findOne({},{_id:0});
for (var i = 0; i< 30; i++){
db.collection.insert(copy);
}
var copy=db.collection.findOne({},{u id:0});
对于(var i=0;i<30;i++){
db.收集。插入(副本);
}
您可以使用以下代码:
使用单行线运行:
db.collectionName.find({"_id" : ObjectId("5a4e47e0a21698d455000009")}).forEach(function(doc){var newDoc = doc; delete newDoc._id; db.collectionName.insert(newDoc); })
db.collectionName.find({"_id" : ObjectId("5a4e47e0a21698d455000009")}).forEach(function(doc){
var newDoc = doc;
delete newDoc._id;
db.collectionName.insert(newDoc);
})
理解的结构格式:
db.collectionName.find({"_id" : ObjectId("5a4e47e0a21698d455000009")}).forEach(function(doc){var newDoc = doc; delete newDoc._id; db.collectionName.insert(newDoc); })
db.collectionName.find({"_id" : ObjectId("5a4e47e0a21698d455000009")}).forEach(function(doc){
var newDoc = doc;
delete newDoc._id;
db.collectionName.insert(newDoc);
})
在mongo shell中:没问题
db.products.find().forEach( function(doc){db.products.insert(
{
"price":doc.price,
"name":doc.name,
"typeName":doc.typeName,
"image":doc.image
}
)} );
我不知道怎么做。每次插入都会创建一个新的unic _id。添加
删除副本。_id
使用{code id:0}
无需删除副本。_id
因为没有获取_id如果我运行此脚本,它只会复制同一文档30次。如何修改此项以复制100个不同的文档(任何文档)?对于轻型用户,必须将上面代码中的集合
替换为您的实际集合名称。如果要克隆行,但不明确键入新id,只需删除“\u id”属性,然后再执行insert命令:delete orig.\u idFirst var应为常量。伟大的解决方案!