2013-10-31 82 views
5

我有收集以下文件:插入子文档与MongoDB中

"_id" : "2", 
"workspace" : [{ 
     "name" : "1", 
     "widgets" : [ ] 
    },{ 
     "name" : "2", 
     "widgets" : [ ] 
    },{ 
     "name" : "3", 
     "widgets" : [ ] 
    },{ 
     "name" : "4", 
     "widgets" : [ ] 
    } 
]} 

我怎样才能插入“小部件” {id: "1", blabla: "blabla"}的“姓名” 3?

+1

这是子阵列不是子文档! – koolaang

回答

11

相较于先前的回答只是插入到一切文件的根,这里是要做到这一点with positional operator一个正确的方法:

db.t.update({ 
"_id" : "2", 
"workspace.name" : "3" 
},{ 
$push: { 
    'workspace.$.widgets' : { 
     id: "2", 
     blabla: "blabla" 
    } 
} 
}); 
+0

据我所知,目前在Meteor的客户端mini-mongo中这不是一个选项(他们还没有实现位置操作符,这是他们最终想要的东西)。 这只会在服务器端工作。对于我的应用程序,我采取了这些类型的任务服务器端。这是可以的,但你必须复制你的安全/验证代码。 – Dave

+0

他们还没有达到1.0,他们仍然在预览/开发。 – Dave