1

我正在使用 Node、MongoDB 和 Mongoose。我已经检查了setupdate上的 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") }
},
4

1 回答 1

3

您可以使用点表示法更新 的time属性并保留其他属性:userCreated

db.posts.update( 
  { "_id" : { $exists : true }  },
  { $set : { "userCreated.time" : new ISODate("2013-07-11T03:34:54Z") } },
  false,
  true
)
于 2013-07-17T23:47:33.020 回答