您好我在使用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'
}
}
}
}
}
)
但是时间表 - > events-> eventTime没有更新值!!!
我在这里做错了什么?
我的主要场景是找到带有关联gName的id(MongoDB),然后更新它的scheduleles数组。
我的查询工作效果很好,但无法更新计划......事件可能很多
答案 0 :(得分:0)
如果我正确地读取您的架构,核心部分是一个包含数组的数组,该数组包含一个包含字符串数组的数组。我认为你会做得更好"反转"模式,因此每个文档代表一个事件。可以将分组多个事件的元数据复制到每个事件文档中。一个例子:
{
"event" : "cookie bake-off",
"gName" : "baking",
"sDate" : ISODate("2015-03-02T21:46:11.842Z")
}
您正在努力解决的更新转化为在集合中插入新的事件文档。