0
首先,我已閱讀並嘗試mongoose-and-partial-select-update後的解決方案。 但是,當我嘗試使用傳統風格時,查詢將起作用。無法通過貓鼬更新單個房產
我的架構:
var userSchema = mongoose.Schema({
local: {
email: {
type: String,
index: {
unique: true,
dropDups: true
}
},
password: String,
displayName: String,
avatar: {
type: String,
default: "./img/user.png"
},
role: {
type: String,
default: "student"
},
ask_history: [
{
question_id: {
type: mongoose.Schema.Types.ObjectId,
ref: 'questionAnswer'
},
favorite: Boolean,
ask_time: Date
}
],
interest: [String]
}
})
工作更新功能:
User.findById(id, function(err, User) {
if (err) {
throw done(err);
}
if (!User) {
return;
}
User.local.role = "admin";
User.save(function(err, updatedUser) {
if (err) {
throw err
} else {
//good
}
})
});
但是,如果我這樣做:
User.update({_id : id},
{$set{
local:{role:"admin"}
}
},function(...){...}
});
上面的代碼將覆蓋用戶爲:
{
_id : "...",
local: {
role : "admin"
}
}
我讀過$會使更新只改變屬性,我做錯了?
謝謝你,你的解決方案的工作,你能告訴我什麼區別,當我使用$組:{「本地。角色「:」admin「} vs $ set:{local:{role:」admin「}}? –
以下是[documentation](https://docs.mongodb.com/manual/reference/operator/update/set/)所說的:** $ set運算符表達式具有以下形式:{$ set:{ :,...}}。 *要在嵌入式文檔或數組中指定,請使用[點符號](https://docs.mongodb.com/manual/core/document/#document-dot-notation)。***希望回答你的問題。 –