我正在使用 Node、MongoDB 和 Mongoose。我检查了 MongoDB 文档 set和 update 。我已经在谷歌上搜索了一个多小时,找到了围绕我的问题的主题,但没有什么明确的。 下面的查询更新了正确的字段,但它也完全删除了数组中我未指定的其他字段。
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") }
},
最佳答案
您可以使用点符号更新 userCreated
的 time
属性并保留其他属性:
db.posts.update(
{ "_id" : { $exists : true } },
{ $set : { "userCreated.time" : new ISODate("2013-07-11T03:34:54Z") } },
false,
true
)
关于node.js - Mongodb更新查询删除除命令中指定字段之外的所有数组字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17711903/