【问题标题】:MongoDB / Mongoose: How to push element to an array in a nested object?MongoDB / Mongoose:如何将元素推送到嵌套对象中的数组?
【发布时间】:2020-07-08 05:42:30
【问题描述】:

我正在使用 mongoose 创建一个 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”中,该元素属于对象“数据”。所以,现在我存储了以下条目:

{ 
  "_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" : [ ] 
            }
}

这是我的问题: 我想将另一个元素推送到数组“1”。我在 google 上进行了一些搜索,并尝试了几种方法,但都没有奏效。 我尝试的最后一个是:

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

我的查询或架构本身的结构是否不正确?

谢谢。

【问题讨论】:

  • data是属性,push会用到"data.1"

标签: node.js mongodb mongoose mongoose-populate


【解决方案1】:

好的,所以我找到了一种方法:

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");
}

});

还是谢谢你!

【讨论】:

    猜你喜欢
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 2020-08-02
    • 2016-01-20
    • 1970-01-01
    相关资源
    最近更新 更多