json - 将元素添加到嵌入在 MongoDB 的子文档中的数组中
问题描述
我的 MongoDB 上有以下方案
{
"weekday": 0,
"hour":[
{
"hour": 14,
"user": "user",
"promoted": ["user1","user2","user3","user4"]
},
{
"hour": 15,
"user": "user",
"promoted": ["user1","user2","user3","user4"]
},
]
}
我想将单个元素添加到某个小时的“提升”数组中,例如,将“user5”添加到具有“小时”的子文档的“提升”数组中:14。
我已经学会了如何将新的子文档添加到小时数组中,但不知道如何将单个元素添加到已经存在的子文档的“提升”数组中。我怎么能那样做?
解决方案
在这种情况下,您需要使用$
. 在这里查看文档:https ://docs.mongodb.com/manual/reference/operator/update/positional/
但是,试试这个脚本:
db.yourCollection.update(
{
"hour.hour": 14
},
{
$push: {"hour.$.promoted": "user5"}
}
)
结果
{
"_id" : ObjectId("60bb8e166cfda8327bbe08eb"),
"weekday" : 0.0,
"hour" : [
{
"hour" : 14.0,
"user" : "user",
"promoted" : [ "user1", "user2", "user3", "user4", "user5"]
},
{
"hour" : 15.0,
"user" : "user",
"promoted" : ["user1", "user2", "user3", "user4"]
}
]
}
推荐阅读
- oop - DAO 和 SOLID 设计原则
- amazon-dynamodb - 可查询的未绑定数量
- sql-server - 如何使用 SQL Server OPENQUERY 一次删除 1000 行
- discord.py - Discord Bot 发送多条消息
- swift - 使用 NetworkExtension API 在 macOS 中实现 Web 过滤器
- php - Laravel Nova:向 Laravel Nova 资源添加行号(非 ID)
- javascript - 寻求建议如何处理这个嵌套的 JSON/Object
- c - 为什么 `volatile` 变量的值不会改变?
- python - 在Python2.7的函数中独立执行代码块
- javascript - 页面加载时调用 Javascript onclick 函数