Как обновить новый массив в существующих документах - PullRequest
0 голосов
/ 09 июля 2019

У меня есть следующий документ на монго в коллекции, теперь мой вопрос: я хочу вставить новый массив в существующие документы, я новичок в mongodb, пожалуйста, отправьте ваш код в соответствии с моими требованиями.

{
    "schoolID" : "5ca5e1915e6f66641efasr",
    "settings" : {
        "sportsAllowed" : true
    }
},
{
    "schoolID" : "5ca5e1915e6f623466ef3a",
    "settings" : {
        "sportsAllowed" : true
    }
}

Ниже массива нужно добавить мои существующие документы

"Sports": [
               {
               "class": "1",
               "name": "Cricked"
               },
              { 
                "class": "2",
               "type": "Football"
              }
        ]

Ожидаемый вывод

{
    "schoolID" : "5ca5e1915e6f66641efasr",
    "settings" : {
        "sportsAllowed" : true,
        "Sports": [
               {
               "class": "1",
               "name": "Cricked"
               },
              { 
                "class": "2",
               "type": "Football"
              }
        ]
    }
},
{
    "schoolID" : "5ca5e1915e6f623466ef3a",
    "settings" : {
        "sportsAllowed" : true,
        "Sports": [
               {
               "class": "1",
               "name": "Cricked"
               },
              { 
                "class": "2",
               "type": "Football"
              }
        ]
    }
}

Мой код

var value=[
    {
        "class": "1",
        "name": "Cricked"
    },
    { 
        "class": "2",
        "type": "Football"
    }
]

db.Colleges.update({},{
    $set : {
        "Sports": value
    }
},{multi:true})

Ответы [ 2 ]

0 голосов
/ 09 июля 2019
let updateWith = {
    'settings.Sports': [
        {
            "class": "1",
            "name": "Cricked"
        },
        {
            "class": "2",
            "type": "Football"
        }
    ]
}
let updateWhere = {}
collection_name.update(updateWhere, { $set: updateWith }, { multi: true }, function (err, affected) {
})
OR..................
let updateWith = [
    {
        "class": "1",
        "name": "Cricked"
    },
    {
        "class": "2",
        "type": "Football"
    }
]
collection_name.update(updateWhere, { $set: { 'settings.Sports': updateWith } }, { multi: true }, function (err, affected) {
})
0 голосов
/ 09 июля 2019

Вы можете использовать обновление без каких-либо соответствующих условий, а multi:true для обновления всех документов в вашей коллекции.

Попробуйте это:

var value=[
    {
        "class": "1",
        "name": "Cricked"
    },
    { 
        "class": "2",
        "type": "Football"
    }
]

db.collection_name.update({},{
    $set : {
        "Sports": value
    }
},{multi:true})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...