【发布时间】:2017-12-16 20:44:31
【问题描述】:
{
"_id" : ObjectId("59660d4099c1e682e0992ced"),
"alpha" : [
{
"_id" : ObjectId("59660d4199c1e682e0992cee"),
"number" : 1,
"start_at" : ISODate("2017-07-12T11:51:28.895Z"),
"end_at" : ISODate("2017-08-12T11:51:28.895Z"),
"created_at" : ISODate("2017-07-12T11:51:29.346Z"),
"updated_at" : null
}
]
}
我有一个如上所述的文档,我想更新或更改“alpha”数组的 JSON 元素中的“number”和“updated_at”字段。
我试过这个:
db.mycol.update({_id: ObjectId("59660d4099c1e682e0992ced"), alpha: {$elemMatch: {_id: ObjectId("59660d4199c1e682e0992cee")}}}, {$set: {"alpha.$.number": 2, "alpha.$.updated_at": new Date()}})
在普通的 mongodb 服务器上运行良好。 但是对于 azure cosmosdb/mongodb,它说好的,但并没有真正更新文档。我做错了什么?
【问题讨论】:
-
Prataksha,你找到解决办法了吗?
-
好吧,首先我获取了整个 alpha 数组,然后我遍历它并更改我想要更改的数据。最后,在我完成之后,我再次$set alpha 数组,其中包含一个新的更新值。我知道它不会像 findAndModify 那样完全原子,但现在它可以完成这项工作。等待 AZURE 的全力支持。
标签: javascript json mongodb azure azure-cosmosdb