在平时开发中,我们可能会遇到修改mongodb文档数组里边元素的值,那如何修改数组中元素的值呢? 其实mongodb 提供了update set指令, 可以实现我们的需求,具体如下:
比如,我们的文档格式如下:
{
"categories": ["新闻","图片"]
}
我们想要把所有文档中categories数组中的新闻改为综合,mongo的修改指令如下:
db.getCollection("test").updateMany({"categories": "新闻"}, {"$set":{"categories.$":"综合"}})
如果数组中的内容是map,格式如下:
{
"categories": [
{
"name": "新闻"
},
{
"name": "图片"
}
]
}
要想将新闻
改为综合
,指令应该如下:
db.getCollection("test").updateMany({"categories.name": "新闻"}, {"$set":{"categories.0.name":"综合"}})
其中的categories.0.name
表示categories数组的第一个元素name值, 修改后的结果:
{
"categories": [
{
"name": "综合"
},
{
"name": "图片"
}
]
}