如何在mongodb中获取文档的所有父级和子级

如何在mongodb中获取文档的所有父级和子级,mongodb,mongodb-query,mongodb-java,Mongodb,Mongodb Query,Mongodb Java,我最近开始研究mongodb。我的简单应用程序将具有地理层次结构,如 Continet-->国家-->地区-->度假村-->住宿 我的数据是这样的 { "_id" : ObjectId("54854d5af2ef42fe7d4d2a44"), "name" : "Europe", "parent" : "", "type" : "Continent", "synonym" : "", "code" : "EEE" } { "_id" :

我最近开始研究mongodb。我的简单应用程序将具有地理层次结构,如

Continet-->国家-->地区-->度假村-->住宿

我的数据是这样的

 {
    "_id" : ObjectId("54854d5af2ef42fe7d4d2a44"),
    "name" : "Europe",
    "parent" : "",
    "type" : "Continent",
    "synonym" : "",
    "code" : "EEE"
}
{
    "_id" : ObjectId("54854d5af2ef42fe7d4d2a47"),
    "name" : "Bulgaria",
    "parent" : "EEE",
    "type" : "Country",
    "synonym" : "",
    "code" : "BGR"
}
{
    "_id" : ObjectId("54854d5af2ef42fe7d4d2a45"),
    "name" : "Albania",
    "parent" : "EEE",
    "type" : "Country",
    "synonym" : "",
    "code" : "ALB"
}
{
    "_id" : ObjectId("54854d5af2ef42fe7d4d2a48"),
    "name" : "Bourgas Region",
    "parent" : "BGR",
    "type" : "Region",
    "synonym" : "",
    "code" : "002682"
}
{
    "_id" : ObjectId("54854d5af2ef42fe7d4d2a49"),
    "name" : "Obzor",
    "parent" : "002682",
    "type" : "Resort",
    "synonym" : "",
    "code" : "002911"
}
{
    "_id" : ObjectId("54854d5af2ef42fe7d4d2a4a"),
    "name" : "Sunny Beach",
    "parent" : "002682",
    "type" : "Resort",
    "synonym" : "",
    "code" : "002548"
}
{
    "_id" : ObjectId("54854d5af2ef42fa7d4d2b3d"),
    "name" : "Hotel Park Avenue",
    "parent" : "002548",
    "type" : "Accommodation",
    "synonym" : "",
    "code" : "022548"
}
如上所示,每个文档中只有直接父级可用

现在,我必须让所有家长和孩子都到一个带有“代码”的文档中:“002548”

如果我有度假区代码,我必须获得以度假区为母的所有住宿,并且我必须获得度假区所属的目的地、国家和大陆

我觉得应该有递归查询来实现这一点,我正在使用MongoTemplate进行db操作

请帮我找到最好的解决方案


提前感谢。

mongodb不支持连接,因此您必须执行多个查询才能进入该层次结构。

了解您在这些文档上运行的查询类型会很有帮助,但我猜感兴趣的级别是
Resort
Accomation
。您已将较高的三个级别组织为单独的文档,但在我看来,它们似乎是
度假酒店
住宿酒店
:度假酒店位于给定的区域、国家或大陆。此外,地区、国家和大陆变化不大。我认为较高级别的地理信息是嵌入
度假村
住宿
文档中的一个很好的选择:

{
    "_id" : ObjectId("54854d5af2ef42fa7d4d2b3d"),
    "name" : "Hotel Park Avenue",
    "type" : "Accommodation",
    "synonym" : "",
    "code" : "022548",
    "region" : "New York",
    "country" : "United States",
    "continent" : "North America"
}
在这种结构下,找到上述住所的“父母”只需查看区域、国家、大陆字段值。查找例如某个国家的“子女”是一个简单的查询:

db.stuff.find({ "country" : "United States" })

这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。他所寻找的是mongo不支持的加入。他将不得不使用多个查询。这就是答案。@Evancholy我知道我们必须使用多个查询。。。。你能建议一下在逻辑上使用多个查询的最佳方式吗?感兴趣的不仅仅是住宿和度假村。我需要所有东西,例如,如果用户搜索国家代码,我想显示所有东西,包括该国的大陆以及该国的所有地区、度假村和住宿。。。希望我清楚