如何更新 [Schema.Types.Mixed]?
Posted
技术标签:
【中文标题】如何更新 [Schema.Types.Mixed]?【英文标题】:How do I update a [Schema.Types.Mixed]? 【发布时间】:2021-07-16 10:37:08 【问题描述】:我正在使用 Schema.Types.Mixed 来存储“配置文件”,这是我的架构
const userSchema = new mongoose.Schema(
name:
type: String,
required: true,
trim: true,
,
profiles:
type: Schema.Types.Mixed
假设我有一个包含值的文档:
name: "XYZ"
profiles:
"fb" :
"name": "XYZ",
"pic": "source",
"link": "www.fb.com/xyz"
,
"twitter" :
"name": "XYZ",
"pic": "source",
"link": "www.twitter.com/xyz"
我想添加另一个字段“youtube”。如何编写 updateOne 查询,以便在配置文件中插入这个新字段?以及如何更新这些内部字段的值?假设我只想更新 fb 的“链接”字段,我该怎么做?
【问题讨论】:
【参考方案1】:可以使用Mongo的聚合管道
如何编写 updateOne 查询,以便在 个人资料?
db.profiles.aggregate( [
$addFields:
"profiles.youtube": "add the data here"
] )
以及如何更新这些内部字段的值?
db.profiles.aggregate( [
$addFields:
"profiles.twitter.name": "add the data here"
] )
这将更新现有字段。如果您想对整个集合进行更改,此管道运行良好。更多详情请查看this。
如果您想对一个文档执行此操作,您可以这样做:
db.profiles.update("name": "XYZ" ,$set : "profiles.youtube":"add data here");
// to update existing data
db.profiles.update("name": "XYZ" ,$set : "profiles.twitter":"add data here");
【讨论】:
以上是关于如何更新 [Schema.Types.Mixed]?的主要内容,如果未能解决你的问题,请参考以下文章