cpe*_*e00 12 javascript mongodb node.js mongojs
我有一个文件"所有者",可以有"n"个阵营,营地有"教官",教师有"班级".之前我尝试使用嵌套数组来完成此操作(请参阅下面链接到我的帖子),但是我了解到位置运算符"$"没有嵌套那么深. MongoDB:将数组添加到现有数组中
但是,我了解到解决方法是使用对象集合而不是数组.我假设我必须使用"更新"和"$ set"来添加额外的"阵营",但是每次我做的都是覆盖(更新)之前插入的阵营.
下面是我想要完成的层次结构:
owner = {
firstName: 'john',
lastName: 'smith',
ownerEmail: 'john.smith@gmail.com',
camps : {
{
name: 'cubs-killeen',
location: 'killeen'
},
{
name: 'cubs-temple',
location: 'temple'
},
instructors : {
{
firstName: 'joe',
lastName : 'black'
},
{
firstName: 'will',
lastName : 'smith'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我也一直在尝试以下方面:
db.owners.update({ownerEmail:'john.smith@gmail.com'}, {$set: { camps:{ {name:'cubs-killeen'} } }})
Run Code Online (Sandbox Code Playgroud)
但是这会抛出一个意外的标识符{错误.
任何帮助一些示例mongo命令来实现上述结构将是非常感激的.
V/R
克里斯
Ant*_*ero 20
如上所述,您想要的结构无效.我建议您的所有者文档使用以下结构:
{
"_id" : ObjectId("51c9cf2b206dfb73d666ae07"),
"firstName" : "john",
"lastName" : "smith",
"ownerEmail" : "john.smith@gmail.com",
"camps" : [
{
"name" : "cubs-killeen",
"location" : "killeen"
},
{
"name" : "cubs-temple",
"location" : "temple"
}
],
"instructors" : [
{
"firstName" : "joe",
"lastName" : "black"
},
{
"firstName" : "will",
"lastName" : "smith"
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后
db.stack.update(
{ ownerEmail: "john.smith@gmail.com" },
{
$push: {
camps: { name: "cubs-killeen", location: "some other Place" }
}
}
);
Run Code Online (Sandbox Code Playgroud)
有了这个,你可以添加这样的阵营:
希望能帮助到你.
归档时间: |
|
查看次数: |
20402 次 |
最近记录: |