【问题标题】:Mongodb Deep Embedded Object Array QueryMongodb 深度嵌入对象数组查询
【发布时间】:2017-07-03 06:33:24
【问题描述】:

您好,我在使用 mongoose 更新嵌入式对象数组时遇到问题!

这是架构:

var event = {
    eTime : [String]
};

var schedule = {
    events: [event]
};

var group = {
    gName: {type:String},
    sDate:  { type: Date, default: Date.now },
    schedules: [schedule]
}; 

MainSchema {
    id          :   String,
    groups      :   [group]
};

我想要做的是用日程表对象更新事件中eTime 的数组。我正在使用这个查询

db.demoDb.update({
   'id': 'MongoDb', 
   'groups':{
       $elemMatch:{
           'gName':'noSql'
       }
    }
 },
 {
    $push:{
      'groups':{
          'schedules':{
              'events':{
                   'eTime':'01-Marach-15'
               }
           }
       }
    }
  }
)

但是 schedules->events->eventTime 没有更新值!!!

我在这里做错了什么?

我的主要场景是找到具有关联 gName 的 id(MongoDB),然后更新它的 schedules 数组。

我的查找查询运行良好,但无法更新时间表...而且事件可能很多

【问题讨论】:

    标签: node.js mongodb nosql


    【解决方案1】:

    如果我正确读取了您的架构,核心部分是一个包含数组的数组,该数组包含一个包含字符串数组的数组。我认为您会更好地“反转”架构,以便每个文档都代表一个事件。可以将分组多个事件的元数据复制到每个事件文档中。一个例子:

    {
        "event" : "cookie bake-off",
        "gName" : "baking",
        "sDate" : ISODate("2015-03-02T21:46:11.842Z")
    }
    

    您遇到的更新会转化为在集合中插入新的事件文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2012-07-23
      • 2016-09-05
      • 2020-09-24
      相关资源
      最近更新 更多