Tôi có tài liệu sau:Cập nhật và/hoặc thêm thuộc tính phần tử mảng bằng cách sử dụng req.body qua Mongoose?
{
"_id" : ObjectId("503b83dfad79cc8d26000004"),
"pdfs" : [
{
"title" : "Test document",
"pdf_id" : ObjectId("504f6793ce351a595d000004"),
"created_at" : ISODate("2012-09-11T16:32:19.276Z")
},
{
"title" : "Some other doc",
"pdf_id" : ObjectId("502bf124b4642341230003f0"),
"created_at" : ISODate("2012-09-11T11:34:19.276Z")
}
]
}
Bây giờ trong một hình thức đến qua req.body
, tôi có 2 lĩnh vực: title
và description
.
Tôi muốn cập nhật title
và chèn description
cho pdf_id được chỉ định, làm cách nào để thực hiện điều đó?
Vì vậy, cuối cùng, tài liệu của tôi bây giờ sẽ trông giống như:
{
"_id" : ObjectId("503b83dfad79cc8d26000004"),
"pdfs" : [
{
"title" : "This is an UPDATED title",
"description" : "It has an ALL NEW description",
"pdf_id" : ObjectId("504f6793ce351a595d000004"),
"created_at" : ISODate("2012-09-11T16:32:19.276Z")
},
{
"title" : "Some other doc",
"pdf_id" : ObjectId("502bf124b4642341230003f0"),
"created_at" : ISODate("2012-09-11T11:34:19.276Z")
}
]
}
Chỉ cần được rõ ràng, tôi thực sự chỉ là tìm kiếm các cú pháp Mongoose update
.
Trong hộp thoại '$ set', là có cách nào để gán các thuộc tính tự động? Người dùng có thể không cung cấp một số và tôi không muốn chỉ định chúng một cách rõ ràng. – k00k
Chắc chắn, bạn chỉ cần xây dựng đối tượng '$ set' đó lập trình và sau đó truyền đối tượng đó làm tham số thứ hai cho cuộc gọi' update'. Sắp xếp giống như trong câu hỏi khác này: http://stackoverflow.com/questions/12184626/nodejs-mongo-insert-into-subdocument-dynamic-fieldname/12185214#12185214 – JohnnyHK
Tuyệt vời, cảm ơn. Cái gì đó vấp tôi lên, có thể giúp đỡ người khác: Nó sẽ không cập nhật cho tôi khi tôi chỉ có mảng của tôi thiết lập để trộn lẫn '[]'. Tôi đã phải xây dựng lược đồ cho mảng và đảm bảo rằng _id của phần tử mảng mà bạn đang cố gắng cập nhật được chỉ rõ như là một 'type: Schema.Types.ObjectId' trong lược đồ của bạn. – k00k