【发布时间】:2017-12-12 09:26:25
【问题描述】:
我是 MongoDB 的新手,必须处理一个不是我创建的遗留项目......而且我很挣扎!
我需要根据特定的字段值重置我的一个集合中的一些文档。到目前为止,我在这方面取得了一些成功,但我需要更新的一些数据位于该文档的嵌套数组中,我无法解决这部分问题。
以下是集合中一个文档的示例:
{
"_id" : ObjectId("1234567890"),
"currentStatus" : "approved",
"itemsInstalled" : [
{
"installDate" : ISODate("2017-04-18T00:00:00.000Z"),
"_id" : ObjectId("1234567890"),
"status" : "approved"
},
{
"installDate" : ISODate("2017-04-18T00:00:00.000Z"),
"_id" : ObjectId("0987654321"),
"status" : "approved"
}
],
"__v" : 5005,
"approvalDate" : ISODate("2017-12-04T10:40:01.580Z"),
"approvedBy" : "automatic"
}
我需要更新集合中approvedBy 字段设置为automatic 的每个文档,而其他文档保持不变。
对于我正在更新的文档,我需要完全删除approvalDate和approvedBy字段,将currentStatus字段更改为action并更改every 将 itemsInstalled 数组中的项目添加到 pending。其他一切都可以保持原样。
如果我有更多时间,我会坚持自己解决这个问题。
【问题讨论】:
-
这在 3.6 版本(几天前发布)中很简单,并带有富有表现力的更新。
db.collection_name.update( {"approvedBy": "automatic"}, {$set: {"itemsInstalled.$[].status": "pending", currentStatus:"action"}, $unset: {approvalDate: "",approvedBy: ""}} )。更多 here 使用情况
标签: mongodb mongodb-query