MongoDB / Mon goose: как поместить элемент sh в массив во вложенном объекте? - PullRequest
0 голосов
/ 27 марта 2020

Я использую mon goose для создания базы данных mongodb, где я храню данные в соответствии со следующей схемой:

const Incidents_Schema = ({
assetID:   Number, 
dataHora:  { 
            year: Number, 
            month: Number, 
            day: Number, 
            hour: Number 
},
data: 
    {
        1: [ {supman: String, desc: String, ticketID: Number} ],
        2: [ {supman: String, desc: String, ticketID: Number} ],
        3: [ {supman: String, desc: String, ticketID: Number} ],
        4: [ {supman: String, desc: String, ticketID: Number} ],
        5: [ {supman: String, desc: String, ticketID: Number} ],
    }
});
const evento  = mongoose.model("Incident", Incidents_Schema);

Я успешно добавил элемент в массив «1», принадлежащий объекту «data». Итак, теперь я сохранил следующую запись:

{ 
  "_id" : ObjectId("5e7df900c79032556c5d4ad1"), 
  "assetID" : 1100006971, 
  "dataHora" : { "year" : 2020, "month" : 3, "day" : 26, "hour" : 21 }, 
  "data" : { "1" : [ { "_id" : "5e7df900c79032556c5d4ad2", "supman" : "foo1", "desc" : "foo2", "ticketID" : 123} ],
             "2" : [ ], 
             "3" : [ ], 
             "4" : [ ], 
             "5" : [ ] 
            }
}

Вот мой вопрос: Я хочу добавить sh другой элемент в массив "1" , Я выполнил поиск в Google и попробовал несколько способов, но ни один из них не сработал. Последнее, что я попробовал, было:

evento.update({"_id": "5e7df900c79032556c5d4ad1"}, {"$push": {"data.$.1": {supman: "foo3", desc: "foo4", ticketID: 456}}});

Я неправильно структурировал запрос или саму схему?

Спасибо.

1 Ответ

1 голос
/ 27 марта 2020

Хорошо, поэтому я нашел способ, выполнив:

evento.updateOne({"_id": "5e7df900c79032556c5d4ad1"}, {"$push": {"data.1": {supman: "foo3", desc: "foo4", ticketID: 456}}},  {upsert:true}, function(err){
if(err){
        console.log(err);
}else{
        console.log("Successfully added");
}

});

В любом случае, спасибо!

...