所以在我的MongoDB Collection中我有这样的结构:
"_id" : "Object("-----------")
"name" : "John Doe"
"tool" : {
"hammer" : {
"name" : "hammer 1",
"characteristics" : [
{
"length" : "9 inches"
},
{
"weight" : "4 pounds"
}
]
我知道数据可能看起来有点奇怪,但我无法将实际数据放在网上,所以我不得不输入一些虚拟数据。基本上我想要做的是能够更新嵌套在这些对象中的数组。因此,我希望能够更新重量或添加我之前未输入过的新特征。例如,添加" metal" :"钢铁"作为数组的新入口。目前我正在使用Node.js和Express.js内置的Rest API来编辑数据库。当我试图弄清楚如何挖掘这个深度时,我能够用最高级别的阵列来做到这一点,但是当我的嵌入式像这样时,我还没有能够弄清楚如何访问阵列。所以我想知道是否有人知道是否甚至可以编辑这么远的阵列?如果需要,我可以从controller.js和server.js文件发布代码,但我想在开始发布之前我是否可以做到这一点。任何帮助将不胜感激!
答案 0 :(得分:0)
您可以使用findAndModify将其推送到数组中。您必须准确指定路径:
db.tools.findAndModify( {
query: { name: "John Doe"},
update: { $push: { tool.hammer.characteristics: {metal: "steel"} }
} );