Trong MongoDB, toán tử $push được sử dụng để nối một giá trị đã chỉ định vào một mảng. Nếu trường được đề cập không có trong tài liệu để cập nhật, toán tử $push sẽ thêm trường đó dưới dạng trường mới và bao gồm giá trị được đề cập làm thành phần của nó. Nếu trường cập nhật không phải là trường kiểu mảng thì thao tác không thành công
Tại thời điểm cập nhật nếu bản thân giá trị là một mảng, toán tử $push sẽ nối toàn bộ mảng dưới dạng một phần tử
Nếu bạn muốn thêm từng phần tử của giá trị một cách riêng biệt, toán tử $push có thể được sử dụng với công cụ sửa đổi $each
cú pháp
db.collection.update[ ,{ $push: { : } }]
Thông số
TênMô tảtrường tên của cột hoặc trường vào tài liệu. giá trị. Đây là những giá trị được chỉ định cho các trường hoặc cột. truy vấn Truy vấn có thể là một biểu thức hoặc điều kiện hoặc tiêu chí
Bộ sưu tập mẫu "sinh viên"
{
"_id" : 1,
"sem" : 1,
"subjects" : [
"phys",
"chem",
"maths",
"gkn",
"stat",
"astro"
],
"achieve" : [
70,
87,
90,
90,
65,
81
]
}
Ví dụ về toán tử MongoDB $push
Nếu chúng ta muốn nối 95 vào trường mảng đạt được đối với các đối tượng điều kiện là "gkn", có thể sử dụng lệnh mongodb sau -
> db.student.update[ { "subjects" : "gkn" },{ $push: { "achieve": 95 } }];
Ở đây trong ví dụ trên, công cụ sửa đổi $each đã được sử dụng để nối nhiều phần tử 77,49,83 vào mảng đạt được khớp với điều kiện đối tượng bằng "gkn"
Để cập nhật một đối tượng bên trong một mảng lồng nhau trong MongoDB, bạn có thể sử dụng phương pháp này, Nó đã được thử nghiệm và hoạt động tốt
Trường hợp
Cập nhật các đối tượng mảng lồng nhau. Xem hình dưới đây để biết rõ hơn về những gì chúng ta sẽ làm. Chúng tôi sẽ cập nhật đối tượng được lồng bởi 3 cấp độ của mảng
{
discussionList[
discussionList [
{
object-value-to-be-updated.
}
]
]
}
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Dung dịch
public courseCategoryPostCommentReplyUpdate[operation: CommentReplyUpdateMutation]: Promise {
return this.courseCategoryPostCommentsModel.updateOne[
{
"postId" : operation.postId,
'discussionList': {
'$elemMatch': {
'_id': operation.commentId,
"discussionList._id": operation.replyId
}
}
},
{
$set: {
"discussionList.$[outer].discussionList.$[inner].payload": operation.payload,
"discussionList.$[outer].discussionList.$[inner].isUpdated": true,
"discussionList.$[outer].discussionList.$[inner].commentUpdateTime": new Date[]
}
},
{
arrayFilters: [
{ "outer._id": operation.commentId},
{"inner._id": operation.replyId}
]
}
];
}
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
FootNotes - mã này là để cập nhật câu trả lời của một bình luận
Đó là cách bạn có thể thực hiện các thao tác trên một đối tượng trong mảng lồng nhau trong tài liệu mongoDB. Bạn cũng có thể cập nhật/xóa các đối tượng có mức độ lồng ghép cao hơn bằng cách sửa đổi truy vấn
Ví dụ về xóa và nhận
Xóa bỏ// Informational Note:
// Delete nested array values in mongodb
public courseCategoryPostCommentReplyDelete[operation: CommentReplyDeleteMutation]: Promise {
return this.courseCategoryPostCommentsModel.updateOne[
{
'postId': operation.postId,
'discussionList': {
'$elemMatch': {
'_id': operation.commentId,
'discussionList._id': operation.replyId
}
}
}, {
$pull: {
'discussionList.$[outer].discussionList': {
user: operation.userId,
_id: operation.replyId
}
}
},
{
arrayFilters: [
{ 'outer._id': operation.commentId }
],
multi: false
}
];
}
}
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
ĐƯỢC
public courseCategoryPostCommentRead[postId: string]: Promise {
return this.courseCategoryPostCommentsModel.findOne[{
postId: postId
}].populate['discussionList.user'].populate['discussionList.discussionList.user'].exec[];
}
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Tôi đang sử dụng GraphQL. Bạn có thể cần lặp lại kết quả và hiển thị nhận xét/câu trả lời theo đó