gpt4 book ai didi

java - mongo中的国家和城市关系

转载 作者:可可西里 更新时间:2023-11-01 10:03:49 26 4
gpt4 key购买 nike

由于 mongo 是一个 nosql 数据库,我有点困惑如何在 java 中表示与 mongo 集合/文档相对应的数据模型。

我有一个只有一个字段的人员表单,Country第二个City .当我选择国家时,来自特定国家的城市列表会填充下拉列表。在典型的 SQL 关系中,它是一对多关系。

我阅读了有关如何将其存储在 mongo 中的可能性 - 我可以使用嵌入式文档来做到这一点,所以 Country对象 List<String>城市名称:

{
_id: "PL",
name: "Poland",
cities: [
{
city: "Lodz",
state: "LDZ",
zip: "XX-XXX"
},
{
city: "Warsaw",
state: "MZK",
zip: "XX-XXX"
}
]
}

然而,每次我从 DB 获取人员时,我也会获取整个国家和所有城市,这是没有意义的。所以这样做的唯一可能性是创建两个单独的集合(城市、国家)并创建 DBRef,然后在 Person 中创建两个字段。模型一个用于城市,一个用于国家,但这两个特定的类会是什么样子?城市应该有国家 ID 吗?这是正确的思维方式还是我走错了方向? 谁能给我一个 mongo JSON 和 java 类的例子?

最佳答案

您的方法似乎没问题。在我看来,在这种情况下,您应该可以在没有 dbrefs 的情况下免费使用它。因为 Mongo 是基于文档的 nosql 数据库,所以嵌入式文档是存储数据的主要方式。

当你在获取国家时,你不需要获取该国家下的所有城市。

简单示例:db.country.find( { name: "Poland"}, {name: 1, id: 1 } ) 仅返回 name 和 id 字段。

城市可能有自己的 id。人物模型可能有城市(可能是关于它的所有东西)和国家(你可能只保存 id 和名称字段)字段,如你所说。

国家(仅添加了额外的城市 ID):

{
_id: "PL",
name: "Poland",
cities: [
{
_id: "1",
city: "Lodz",
state: "LDZ",
zip: "XX-XXX"
},
{
_id: "2",
city: "Warsaw",
state: "MZK",
zip: "XX-XXX"
}
]
}

人:

{
_id: "1",
name: "John",
surname: "Doe",
country: {_id:"PL",name="Poland"}, // I think you can save without citylist, country object
city: {
_id: "2",
city: "Warsaw",
state: "MZK",
zip: "XX-XXX"
}

我的回答只是在这种情况下的一个意见(你对java类的要求,它显示出与某些框架的差异,你也可以将这些文档视为pojo)。

关于java - mongo中的国家和城市关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29798130/

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