MongoDB $addToSet 是否可用於新增深度巢狀的物件陣列?
$addToSet 運算子向陣列新增一個值,除非該值已存在,在這種情況下 $addToSet 對該陣列不執行任何操作。
讓我們先使用文件建立集合 −
> db.demo380.insertOne({
...
... "details" : [
... {
... "Name" : "Chris",
... "details1" : [ ]
... },
... {
... "Name" : "David",
... "details1" : [ ]
... }
... ]
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e5b56e32ae06a1609a00b11")
}使用 find() 方法顯示集合中的所有文件 −
> db.demo380.find().pretty();
將生成以下輸出 −
{
"_id" : ObjectId("5e5b56e32ae06a1609a00b11"),
"details" : [
{
"Name" : "Chris",
"details1" : [ ]
},
{
"Name" : "David",
"details1" : [ ]
}
]
}以下是新增深度巢狀的物件陣列的查詢 −
> db.demo380.update({
... "details.Name": "David"
... }, {
... $addToSet: {
... "details.$.details1": {
... 'SubjectName': "MongoDB",
... 'TeacherName':"Bob"
... }
... }
... }, false, true);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })使用 find() 方法顯示集合中的所有文件 −
> db.demo380.find().pretty();
將生成以下輸出 −
{
"_id" : ObjectId("5e5b56e32ae06a1609a00b11"),
"details" : [
{
"Name" : "Chris",
"details1" : [ ]
},
{
"Name" : "David",
"details1" : [
{
"SubjectName" : "MongoDB",
"TeacherName" : "Bob"
}
]
}
]
}
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP