使用Express js引用嵌套在MongoDB中的多个对象中的数组

时间:2015-05-12 14:50:57

标签: angularjs node.js mongodb express

所以在我的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文件发布代码,但我想在开始发布之前我是否可以做到这一点。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您可以使用findAndModify将其推送到数组中。您必须准确指定路径:

db.tools.findAndModify( {
   query: { name: "John Doe"},
   update: { $push: { tool.hammer.characteristics: {metal: "steel"} }
} );