Cách tiếp cận của tôi là lấy cá thể tài liệu và tạo một đối tượng mới từ các trường thể hiện. Tôi chắc chắn có một cách tốt hơn để làm điều đó.Cách dễ nhất để sao chép/sao chép một cá thể tài liệu mongoose?
Trả lời
Bạn có thể làm rõ ý nghĩa của từ "sao chép/sao chép" không? Bạn đang cố gắng tạo một tài liệu trùng lặp trong cơ sở dữ liệu? Hay bạn chỉ đang cố gắng có hai số var
trong chương trình có dữ liệu trùng lặp?
Nếu bạn chỉ làm:
Model.findById(yourid).exec(
function(err, doc) {
var x = doc;
Model.findById(yourid).exec(
function(err, doc2) {
var y = doc2;
// right now, x.name and y.name are the same
x.name = "name_x";
y.name = "name_y";
console.log(x.name); // prints "name_x"
console.log(y.name); // prints "name_y"
});
});
Trong trường hợp này, x
và y
sẽ có hai "bản sao" của cùng một tài liệu trong chương trình của bạn.
Ngoài ra, nếu bạn muốn để chèn một bản sao mới của doc vào cơ sở dữ liệu (mặc dù với một khác nhau _id
tôi giả sử), mà sẽ trông như thế này:
Model.findById(yourid).exec(
function(err, doc) {
var d1 = doc;
d1._id = /* set a new _id here */;
d1.save(callback);
}
);
Hoặc nếu bạn đang làm điều này ngay từ đầu, hay còn gọi là bạn đã tạo một số tài liệu d1
, bạn chỉ có thể gọi save
hai lần mà không cần thiết lập các _id
:
var d1 = new Model({ name: "John Doe", age: 54 });
d1.save(callback);
d1.save(callback);
nay sẽ có hai tài liệu với khác nhau _id
và tất cả các trường khác giống nhau trong cơ sở dữ liệu của bạn.
Điều này có làm rõ mọi thứ một chút không?
Các mã sau đây để sao chép tài liệu trong phản ứng của Amelia trên không hoạt động:
Model.findById(yourid).exec(
function(err, doc) {
var d1 = doc;
d1._id = /* set a new _id here */;
d1.save(callback);
}
);
Bạn cũng cần phải thiết lập lại
d1.isNew = true;
như trong:
Model.findById(yourid).exec(
function(err, doc) {
doc._id = mongoose.Types.ObjectId();
doc.isNew = true; //<--------------------IMPORTANT
doc.save(callback);
}
);
cảm ơn doc.isNew :) – victorkurauchi
Đã lưu cuộc sống của tôi (sắp xếp) :) – JoeTidee
Đã lưu một cuộc sống khác bằng doc.isNew. Cảm ơn! – jimmy
Các mã sau để sao chép tài liệu:
Model.findById(yourid).exec(
function(err, doc) {
var newdoc = new Model(doc);
newdoc ._id = mongoose.Types.ObjectId();
newdoc .save(callback);
}
);
Đối với chỉ đơn giản là sao chép sử dụng này:
Context.findOne({
_id: context._id
})
.then(function(c) {
c._id = undefined;
c.name = context.name;
c.address = context.address;
c.created = Date.now();
return Context.create(c.toObject());
}).then(function(c) {
return res.json({
success: true,
context: context
});
}).catch(function(err) {
next(err, req, res);
});
- 1. Cách dễ nhất để sao chép một dataview đến một datatable trong C#?
- 2. Mongoose: điền()/DBref hoặc sao chép dữ liệu?
- 3. Eclipse Eclipse: Cách dễ nhất để sao chép một lớp là gì?
- 4. Cách dễ nhất để sao chép SQL Server DB để kiểm tra DB?
- 5. MATLAB Cách dễ nhất để gán các yếu tố của một vector để biến cá nhân
- 6. Làm cách nào để sao chép một cá thể lớp JavaScript?
- 7. Cách dễ nhất để sao chép sâu (copy) một đối tượng Scala có thể thay đổi được là gì?
- 8. schema tài liệu Mongoose và xác nhận
- 9. Cách nhanh nhất để sao chép một GregorianCalendar?
- 10. Làm cách nào để sao chép/sao chép một thể hiện của đối tượng trong CoffeeScript?
- 11. Cách nhanh nhất để sao chép một bảng trong mysql?
- 12. Whats cách tốt nhất để sao chép/sao chép dự án thành một mới với git?
- 13. Cách điền các tài liệu được nhúng lồng vào Mongoose
- 14. Whats cách tốt nhất để sao chép dữ liệu trong một mẫu django?
- 15. Mongoose tài liệu nhúng cập nhật
- 16. Mongoose tìm(), cách truy cập tài liệu kết quả?
- 17. SQL 2005 - cách nhanh chóng để sao chép nhanh một cơ sở dữ liệu + dữ liệu
- 18. Sao chép dữ liệu một chiều một cách tối ưu?
- 19. Làm cách nào để sao lưu cơ sở dữ liệu MongoDB GridFS một cách dễ dàng nhất?
- 20. Sao chép văn bản và hình ảnh phong phú từ một tài liệu sang MIME trong một tài liệu khác
- 21. Mongoose: không đặt _id để nhúng tài liệu
- 22. Làm cách nào để sao chép tài liệu XML, trong Javascript?
- 23. Nodejs/mongoose. cách tiếp cận nào là thích hợp hơn để tạo một tài liệu?
- 24. Sao chép tài liệu trong MongoDB bằng cách sử dụng một _id
- 25. Mongoose không cập nhật tài liệu được nhúng
- 26. làm thế nào để đi về việc sao chép một nút của tài liệu xml khác?
- 27. Cách tốt nhất để sao chép cơ sở dữ liệu là gì?
- 28. Sao chép dữ liệu lưu trữ từ một tài khoản Azure này sang một tài khoản Azure khác
- 29. Cách đơn giản nhất để sao chép int thành byte []
- 30. Cách tốt nhất để sao chép toàn bộ cơ sở dữ liệu trong MS SQL Server?
Vâng, thực sự, tôi đã kết thúc nhận được 'doc', loại bỏ' _id' và tiết kiệm :) – fusio
Vui mừng khi nghe nó làm việc ra! – Amalia
Bạn đã xóa _id bằng cách nào? – JoeTidee