У меня есть следующая схема:Вставить в внедренный документ
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 или вставить новый, если не существует документ в встроенном quizzeHistory
Я пытаюсь установить документ в встроенный 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 изменить документ во встроенную коллекцию или вставить новый, если он не существует?
hi @ jack.the.ripper спасибо за ваш ответ, нет способа сделать это без каких-либо условий? – kaxi1993
который состояние? можете ли вы немного подробнее остановиться? –
Я буду делать user.find, и если он вернет пустой массив, я использую $ push иначе $ set – kaxi1993