我正在使用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的“链接”字段,我该如何做?
发布于 2021-04-22 08:54:56
您可以使用Mongo的聚合管道。
如何编写updateOne查询,使其在配置文件中更新这个新字段?
db.profiles.aggregate( [
{
$addFields: {
"profiles.youtube": "add the data here"
}
}
] )以及如何更新这些内部字段的值?
db.profiles.aggregate( [
{
$addFields: {
"profiles.twitter.name": "add the data here"
}
}
] )这将更新现有字段。如果要对整个集合进行更改,则此管道运行良好。有关更多细节,请查看这。
如果要对一个文档执行此操作,则可以这样做:
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"}});https://stackoverflow.com/questions/67209298
复制相似问题