【发布时间】:2021-09-25 06:42:15
【问题描述】:
我们如何将文档克隆到具有新 _id 的相同或新集合中
这里是来自“doc”(res.query)的查询中找到的数据
[
{
_id: new ObjectId("614d4766fb2600340fdb2904"),
templateName: 'first template',
_ref: '1632454502ref',
owner: 'wxTWH8zqSwaIXPAVsjZoRCkvjx73',
__v: 0
}
]
不工作:
TemplateInfo.find(req.query).exec(function (err, doc) {
console.log("document", doc);
var newdoc = new TemplateInfo(doc[0]);
delete newdoc._id; //= mongoose.Types.ObjectId();
newdoc.save();
});
这可行,但数据现在是一个未正确插入的对象
TemplateInfo.find(req.query).exec(function (err, doc) {
console.log("document", doc);
var newdoc = new TemplateInfo(doc);
newdoc._id = mongoose.Types.ObjectId();
newdoc.save();
});
结果错误:
{
"0": {
"_id": {
"$oid": "614d4766fb2600340fdb2904"
},
"templateName": "first template",
"_ref": "1632454502ref",
"owner": "wxTWH8zqSwaIXPAVsjZoRCkvjx73",
"__v": 0
},
"_id": {
"$oid": "614e34dbf288909e4713282b"
},
"__v": 0
}
工作正常,但是我需要从查询中获取我的数据,而不是手动输入
const docData = {
//_id: new ObjectId("614d4766fb2600340fdb2904"),
templateName: "first template",
_ref: "1632454502ref",
owner: "wxTWH8zqSwaIXPAVsjZoRCkvjx73",
__v: 0,
};
TemplateInfo.find(req.query).exec(function (err, doc) {
console.log("document", doc);
var newdoc = new TemplateInfo(docData);
newdoc._id = mongoose.Types.ObjectId();
newdoc.save();
});
结果正确,但我手动将它们作为变量输入:
{
"_id": {
"$oid": "614e378700b5bd9c7ba5ef37"
},
"templateName": "first template",
"_ref": "1632454502ref",
"owner": "wxTWH8zqSwaIXPAVsjZoRCkvjx73",
"__v": 0
}
我希望在 mongoDB 集合中有一份具有不同 _id 的文档的副本
{
_id: new ObjectId("614d4766fb2600340fdb2904"),
templateName: 'first template',
_ref: '1632454502ref',
owner: 'wxTWH8zqSwaIXPAVsjZoRCkvjx73',
__v: 0
}
【问题讨论】:
标签: javascript node.js mongodb mongoose