mongodb - 如何从猫鼬中传递的对象更新一个字段
问题描述
万一我有一个看起来像下面的对象
const auth = {
geohash: args.input.geohash,
offenses: args.input.offenses,
online: args.input.online,
paid: args.input.paid,
profilePic: args.input.profilePic,
username: args.input.username,
}
我通过它以更新文档
const update = { _id: mongoose.Types.ObjectId(args._id) }
const value = await DiscoverUsers.findOneAndUpdate(update, auth, { useFindAndModify: false, new: true })
所以如果我只想更新用户名,我不想继续创建一个突变来更新文档中的每个字段。假设我的突变看起来像这样
mutation{
updateDiscoverUsers(_id:"5dab7c198a83f235c89a964a",input:{username:"peter"}){
username
}
}
但这只会更新用户名,但它会使其余字段为空,但我只想找到一种方法来仅更新我在突变中传递的字段,其余字段保持不变。所以我只能更新用户名和 profilePic,其余的保持不变。我将不胜感激,并提前致谢
解决方案
您应该使用原子运算符$set
仅在您想要的地方进行更新,并且您应该只传递您想要更新的字段,而不是所有字段,否则所有字段都将被新值更新。
喜欢:
const value = await DiscoverUsers.findOneAndUpdate(update, {$set:{username:"pedro"}}, { useFindAndModify: false, new: true })
推荐阅读
- react-native - undefined 不是评估 'this.props.dispatch 的函数
- python - 如何在没有 Pub/Sub 的情况下使用 Dataflow 将 Google Cloud Storage 存储桶流式传输到 Big Query
- excel - 无法从 url 中提取 id
- java - 将 jnetpcap 添加到 maven 失败
- google-apps-script - 使用 setValues 函数的问题
- python - 显示所有行时显示行数和列数
- ruby - 如何检测哈希中的重复键并向重复项添加前缀?
- mysql - Codeigniter + MySQL - 搜索包含字符串
- reactjs - null 不是对象(评估“ShareDialog.canShow”)
- jquery - 轮播的暂停问题