2013-07-17 34 views
1

我正在使用Node,MongoDB和Mongoose。我检查了setupdate上的MongoDB文档。我已经搜索了一个多小时,并且发现了围绕我的问题跳舞的主题,但是没有任何明确的说法。 下面的查询更新了正确的字段,但它也完全删除了我没有指定的数组中的其他字段。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") } 
}, 

回答

3

您可以更新的userCreatedtime财产通过使用点符号单独留下其他属性:

db.posts.update( 
    { "_id" : { $exists : true } }, 
    { $set : { "userCreated.time" : new ISODate("2013-07-11T03:34:54Z") } }, 
    false, 
    true 
) 
相关问题