我如何插入并findMongoDB中的多个嵌套数组内的对象?

我有一个问题,试图在mongoDB我的mongoose模式中的多个嵌套数组中插入一个对象。 我有以下结构:

 { contries: [{ name: 'String', states: [{ name: 'String', cities: [{ name: 'String', regions: [{ name: 'String', habitants: [{ name: 'String', age: Number }, { name: 'String', age: Number } ] }] }] }] }] } 

1 – 想象一下,我想在特定城市的特定区域内插入居住者,我如何构build查询?

2 – 如果收到整个json对象作为请求,我需要检查是否存在任何国家,城市,州或地区,如果它们都不存在,我需要创build并插入数组中的居民。

3 – 如果我只需要从特定城市的特定区域获得居民数组,我怎样才能使用投影算子来过滤? (我想mongo过滤,而不是应用程序)。

4(BONUS) – Habitants数组只包含一个居民对象的对象Id,只需要使用populate?

用mongodb做这些事情是不可能的。
根据mongodb文档,不可能遍历数组中的多个1个部门。

位置$操作符不能用于遍历多个数组的查询,例如遍历嵌套在其他数组中的查询,因为replace$ placeholder是单个值。

但是,您可以使用另一个模式,如:
把居住文件带到最高层
这是一个习惯文档:

 { name: 'hab1', country: 'country1', city: 'cit1', region: 'region1' } 

使用此模式可以规范化或非规范化数据,并可以轻松查询和投影数据。

更新:这个mongodb限制似乎在不久的将来解决https://jira.mongodb.org/browse/SERVER-27089