蒙哥的爪哇国家和城市关系
由于mongo是一个nosql数据库,我有点困惑如何用java表示mongo集合/文档对应的数据模型
我有一个person表单,有一个字段Country
和第二个City
。当我选择country时,特定国家的城市列表将填充下拉列表。在典型的SQL关系中,它是一对多关系
我了解了如何在mongo中存储它的可能性-我可以使用eMebeded文档来实现它,因此一个带有List<String>
城市名称的Country
对象:
{
_id: "PL",
name: "Poland",
cities: [
{
city: "Lodz",
state: "LDZ",
zip: "XX-XXX"
},
{
city: "Warsaw",
state: "MZK",
zip: "XX-XXX"
}
]
}
然而,每次我从DB接人时,我也会把整个国家和所有城市都接过来,这是没有道理的。因此,唯一可行的方法是创建两个单独的集合(城市、国家)并创建DBRef,然后在Person
模型中创建两个字段,一个用于城市,一个用于国家,但是这两个特定的类是什么样的呢?城市应该有国家身份证吗?这是正确的思维方式还是我走错了方向有人能给我举一个mongo JSON和java类的例子吗强>
# 1 楼答案
你的方法似乎还可以。在我看来,在这种情况下,您应该免费使用它,而不使用dbrefs。因为Mongo是基于文档的nosql db,所以嵌入式文档是存储数据的主要方式
在获取country时,不需要获取country下的所有城市
简单的例子:
db.country.find( { name: "Poland" }, {name: 1, id: 1 } )
只返回name和id字段城市可能有自己的id。人物模型可能有城市(可能是所有关于它的东西)和国家(您可以只保存id和姓名字段)字段,正如您所说的
国家/地区(仅添加额外的城市id):
人:
在这种情况下,我的回答只是一个观点(您对java类的请求,它显示了与某些框架的差异,您也可以将这些文档视为pojo)