簡體   English   中英

如何在MongoDB中將子文檔添加到子文檔數組

[英]How to add a sub document to sub document array in MongoDB

我在mogodb中有一個這樣的集合:

{
"_id" : ObjectId("5393006538efaae30ec2d458"),
"userName" : "shiva",
"userUnderApiKey" : 123456,
"groups" : [
    {
        "groupName" : "Default",
        "groupMembers" : [ ]
    }
]
}

我想在groups數組中添加一個新組作為子文檔,如下所示

 {
"_id" : ObjectId("5393006538efaae30ec2d458"),
"userName" : "shiva",
"userUnderApiKey" : 123456,
"groups" : [
    {
        "groupName" : "Default",
        "groupMembers" : [ ]
    },

    {
        "groupName" : "Family",
        "groupMembers" : [ ]
    }
]
}

如何在子文檔數組中插入新的子文檔。將提供任何幫助

要向數組添加新成員,只需像通常那樣使用$push

db.collection.update(
    { "_id": ObjectId("5393006538efaae30ec2d458") },
    { 
        "$push": {
            "groups": {
                "groupName" : "Family",
                "groupMembers" : [ ]
            }
        }
    }
)

然后,如果要將成員添加到該成員包含的數組中,則需要匹配要添加到的元素:

db.collection.update(
    { 
        "_id": ObjectId("5393006538efaae30ec2d458"),
        "groups.groupName" : "Family",
    },
    { 
        "$push": {
            "groups.$.groupMembers" : "bill"
        }
    }
)

我想您會對$ push感興趣

$ push運算符將指定的值附加到數組。

$ addToSet

僅當值尚未在數組中時,$ addToSet運算符才會將值添加到數組中。 如果該值在數組中,則$ addToSet不會修改該數組。

您可以在上面的文檔中找到示例。 就像這樣:

db.collection.update({
    _id: ObjectId("5393006538efaae30ec2d458")
}, {
    $push: {
        groups: {
            "groupName": "Family",
            "groupMembers": []
        }
    }
});
SampleModel:
{
"Name":String,
"brandid": {
        type: Schema.ObjectId,
        ref: 'BrandList.BrandItems',
    }
}

BrandModel:
{
    "BrandName" : String,
    "BrandItems": [{
        "KG": Number,
        "_id" : {type: Schema.ObjectId}
    }]
}

如何將子文檔數組對象ID引用到另一個模型,以及如何將填充用於此“ brandid”。

請給我一些slutatin來解決這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM