MongoDB:将数组中的每个项更改为对象
我正在学习MongoDB,并尝试更新我收藏的每个文档中存储的数组中的每个项目。因此,我的文档采用以下格式:MongoDB:将数组中的每个项更改为对象,mongodb,mongodb-query,nosql,Mongodb,Mongodb Query,Nosql,我正在学习MongoDB,并尝试更新我收藏的每个文档中存储的数组中的每个项目。因此,我的文档采用以下格式: {_id:..., name:'...', image: '...', devices: ['item1', 'item2', 'item3',...] } 我要做的是将devices数组中的每个项转换为如下对象: devices:[{item1:'imagepath'},{item2:'imagepath'},{item3:'imagepath'}] 我尝试在MongoDB
{_id:...,
name:'...',
image: '...',
devices: ['item1', 'item2', 'item3',...]
}
我要做的是将devices数组中的每个项转换为如下对象:
devices:[{item1:'imagepath'},{item2:'imagepath'},{item3:'imagepath'}]
我尝试在MongoDB shell中运行以下代码,但什么也没发生。我没有发现任何错误。检查集合时,设备阵列尚未更新
db.airforce.find().forEach(function (obj1) {
obj1.devices.forEach(function(device){
db.airforce.update({},{
$set:{
"devices.[device]":{device:'images/devices/' + device + '.png'}
}
})
}
)
});
谢谢你的帮助 您可以使用
$map
修改数组
db.collection.aggregate([
{
$addFields: {
devices: {
$map: {
input: "$devices",
in: {
item: "$$this"
}
}
}
}
}
])
工作您可以使用
$map
修改数组
db.collection.aggregate([
{
$addFields: {
devices: {
$map: {
input: "$devices",
in: {
item: "$$this"
}
}
}
}
}
])
工作你可以试试
- 创建一个名为
的变量,并按设备方向推送图像路径devices
- 将
分配给设备
obj1。设备
保存整个文档save()
- 创建一个名为
的变量,并按设备方向推送图像路径devices
- 将
分配给设备
obj1。设备
保存整个文档save()