MongoDb:如何将其他对象插入对象集合?

我有一个文件“所有者”,可以有“n”个营地,营地有“导师”,导师有“class级”。 早些时候我尝试用嵌套数组完成这个任务(请参阅下面的链接),但是我知道位置运算符“$”不能嵌套那么深。 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' } } } } 

我也一直在尝试以下几点:

 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" } } } ); 

有了这个,你可以添加这样的阵营:

希望能帮助到你。