Toán tử $ addToSet thêm một giá trị vào một mảng trừ khi giá trị đó đã có sẵn, trong trường hợp đó $ addToSet không làm gì với mảng đó.
Trước tiên, hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -
> db.demo380.insertOne({ ... ... "details" : [ ... { ... "Name" : "Chris", ... "details1" : [ ] ... }, ... { ... "Name" : "David", ... "details1" : [ ] ... } ... ] ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5e5b56e32ae06a1609a00b11") }
Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find () -
> db.demo380.find().pretty();
Điều này sẽ tạo ra kết quả sau -
{ "_id" : ObjectId("5e5b56e32ae06a1609a00b11"), "details" : [ { "Name" : "Chris", "details1" : [ ] }, { "Name" : "David", "details1" : [ ] } ] }
Sau đây là truy vấn để thêm một mảng đối tượng lồng nhau sâu -
> db.demo380.update({ ... "details.Name": "David" ... }, { ... $addToSet: { ... "details.$.details1": { ... 'SubjectName': "MongoDB", ... 'TeacherName':"Bob" ... } ... } ... }, false, true); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find () -
> db.demo380.find().pretty();
Điều này sẽ tạo ra kết quả sau -
{ "_id" : ObjectId("5e5b56e32ae06a1609a00b11"), "details" : [ { "Name" : "Chris", "details1" : [ ] }, { "Name" : "David", "details1" : [ { "SubjectName" : "MongoDB", "TeacherName" : "Bob" } ] } ] }