gpt4 book ai didi

javascript - MongoDb : How to insert additional object into object collection?

转载 作者:IT老高 更新时间:2023-10-28 13:11:34 25 4
gpt4 key购买 nike

我有一个文档“所有者”,它可以有“n”个营地,营地有“讲师”,讲师有“类(class)”。早些时候,我尝试使用嵌套数组来完成此操作(请参阅下面我的帖子的链接),但是我了解到位置运算符“$”不会嵌套那么深。 MongoDB: Adding an array into an existing array

但是,我了解到解决方法是使用对象集合而不是数组。我假设我必须使用带有“$set”的“update”来添加额外的“camps”,但是每次我所做的一切都是覆盖(更新)之前插入的camp。

下面是我想要完成的层次结构:

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'
}
}

}

}

我也一直在尝试以下方法:

db.owners.update({ownerEmail:'john.smith@gmail.com'}, {$set: { camps:{ {name:'cubs-killeen'} } }})

但这会引发意外的标识符 { 错误。

对于实现上述结构的一些示例 mongo 命令的任何帮助将不胜感激。

V/R

克里斯

最佳答案

如前所述,您想要的结构无效。我建议您的所有者文档采用以下结构:

    {
"_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"
}
]
}

然后

db.stack.update(
{ ownerEmail: "john.smith@gmail.com" },
{
$push: {
camps: { name: "cubs-killeen", location: "some other Place" }
}
}
);

有了这个,你可以像这样添加营地:

希望对你有帮助。

关于javascript - MongoDb : How to insert additional object into object collection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17288439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com