【发布时间】:2015-01-26 11:54:13
【问题描述】:
我有以下架构:
var UserSchema = new Schema({
username: { type: String, required: true },
password: { type: String, required: true },
userType: { type: String, default: 'user'},
quizzHistory: [{
quizzName: String,
quizzScore: Number
}]
});
我的目标是将文档更改为嵌入式 quizzHistory 或插入新文档(如果嵌入式 quizzHistory 中不存在文档)
我尝试将文档设置为嵌入式 quizzHistory :
User.findOneAndUpdate({ _id: req.session.user['_id'], 'quizzHistory.quizzName': testName},
{
'$set': {
'quizzHistory.$.quizzName': testName,
'quizzHistory.$.quizzScore': finalScore
}
}, {upsert: true},
function(err, upd) {
console.log("added");
})
如果 quizzHistory 中存在具有所需 _id 和 quizzHistory.quizzName 的文档,则上面的代码有效,但如果没有任何文档,则不要推送新的。
Mongodb 中是否有任何方法可以将文档更改为嵌入式集合,如果不存在则插入新集合?
【问题讨论】: