mongodb更新查询删除命令中指定的字段以外的所有数组字段
Posted
技术标签:
【中文标题】mongodb更新查询删除命令中指定的字段以外的所有数组字段【英文标题】:Mongodb Update Query Deletes All Array Fields Except Field Specified in Command 【发布时间】:2013-07-16 17:18:33 【问题描述】:我正在使用 Node、MongoDB 和 Mongoose。我检查了 set 和 update 上的 MongoDB 文档。我已经用谷歌搜索了一个多小时,我发现了围绕我的问题跳舞的主题,但没有确定的。 下面的查询更新了正确的字段,但它也完全删除了数组中我没有指定的其他字段。
db.posts.update(
"_id" : $exists : true ,
$set : userCreated : "time" : new ISODate("2013-07-11T03:34:54Z") ,
false,
true
)
这是我要修改的架构部分:
,
userCreated:
id: type: mongoose.Schema.Types.ObjectId, ref: 'User' ,
name: type: String, default: '' ,
time: type: Date, default: Date.now
,
这就是结果:
,
"userCreated":
"time": ISODate("2013-07-11T03:34:54Z")
,
【问题讨论】:
【参考方案1】:您可以使用点表示法更新userCreated
的time
属性并保留其他属性:
db.posts.update(
"_id" : $exists : true ,
$set : "userCreated.time" : new ISODate("2013-07-11T03:34:54Z") ,
false,
true
)
【讨论】:
以上是关于mongodb更新查询删除命令中指定的字段以外的所有数组字段的主要内容,如果未能解决你的问题,请参考以下文章