我有一个包含嵌入文档的集合。这在文档中更新文档时工作正常,但是当我不得不在文档中更新文档时出现问题。为了完成这项工作,我需要使用双倍的' $'这是不可能的。 这有效:
{$push: {
"progress.$.exercise":{
"exercise":exercise
}
}
这就是问题所在:
{$push: {
"progress.$.exercise.$.workout":{
"_set":_set,
"reps":reps,
"weight":weight
}
}
因为dobbel $无法完成,似乎没有办法(我能找到)用elemMatch来完成它。我只能得出结论,我构建数据库的方式是错误的....
以下是我的架构:
var Workout = new mongoose.Schema({
_set : {
type: String
},
reps: {
type: String
},
weight: {
type: String
}
});
var Exercise = new mongoose.Schema({
exerciseName : {
type: String
},
workout : [Workout]
});
var Progress = new mongoose.Schema({
date : {
type: String
},
name : {
type: String
},
exercise : [Exercise]
});
var UserSchema = mongoose.Schema({
username: {
type: String,
index:true
},
password: {
type: String
},
email: {
type: String
},
name: {
type: String
},
progress : [Progress]
});
var User = module.exports = mongoose.model('User', UserSchema);
似乎我需要重构我的数据库,如果是这样我应该怎么做? 我需要制作更多收藏品吗? 我已经习惯了关系型数据库,如果我在哪里制作所有这些的集合,它就会开始看起来像那样。