鍍金池/ 問答/數(shù)據(jù)庫  HTML/ mongoose如何只修改object的某幾個(gè)value?

mongoose如何只修改object的某幾個(gè)value?

大概情況和這個(gè)差不多 https://cnodejs.org/topic/50d...

schema:

const userInfoSchema = new Schema({
  uId: String,
  userId: Number,
  wxInfo: {
    unionid: String,
    openid: String,
    nickName: String,
    avatarUrl: String,
    gender: Number, 
    city: String,
    province: String,
    country: String,
    language: String, 
  },
  createTimeUtc: { type: Date, default: Date.now },
  updateTimeUtc: { type: Date, default: Date.now },
})

node:
現(xiàn)在是用的這樣

  await UserInfoModel.findOneAndUpdate({ userId }, {
    $set: {
      'wxInfo.nickName': nickName,
      'wxInfo.avatarUrl': avatarUrl,
      'wxInfo.gender': gender,
      'wxInfo.city': city,
      'wxInfo.province': province,
      'wxInfo.country': country,
      'wxInfo.language': language,
      updateTimeUtc: Date.now(),
    }
  });

這樣寫會(huì)把wxInfo全部更新掉:

  UserInfoModel.findOneAndUpdate({ userId }, {
    wxInfo: {
      nickName, avatarUrl, gender, city, province, country, language,
    },
  });

怎樣簡單的方法寫才能讓nickName, avatarUrl, gender, city, province, country, language 全更新,而其他沒傳的保持不變?

回答
編輯回答
久不遇

你只需要把想要更新的項(xiàng)使用update方法就可以更新

2017年5月19日 03:56
編輯回答
背叛者
2017年4月12日 19:48
編輯回答
練命
UserInfoModel.findOneAndUpdate(
{
    userId
},
{
    "wxInfon.nickName" : nickName,
    "wxInfon.avatarUrl" : avatarUrl,
    "wxInfon.gender" : gender,
    "wxInfon.city" : city,
    "wxInfon.province" : province,
    "wxInfon.country" : country,
    "wxInfon.language" : language
});
2017年5月28日 17:32