我有一个像这样的关系的现有neo4j数据库...
User-[:Owner]->Item
User
包含通常的属性; name
,email
等
Owner
关系有created_on
属性
Item
有很多关于该项目的属性; title
,description
等
我想为geo-location
添加Item
属性。这将是用户创建项目的latitude
和longitude
。
JSON api正在向我们的客户提供此数据。 API将合并一些数据,因此api中的Item
对象将具有嵌套的User
对象作为其属性...
"item": {
"title":"my item",
"user":{
"name":"smith"
}
}
我最初认为这个地方会效仿......
"item": {
"title":"my item",
"user":{
"name":"smith"
},
"geo_position":{
"latitude":"10.123456789",
"longitude":"10.123456789"
}
}
由于我们无法在Neo中嵌套数据,因此想知道如何存储这些数据......
geo_position
Item
属性下的纬度和经度数据序列化? Owner.latitude
的属性? Location
`用户 - [:拥有] - > Mite< - [:created_at] -Location?Item
的个别属性没有嵌套,item.latitude
? 1 - 我假设我们无法查询
2 - 感觉不是正确的地方
3 - 极不可能2 Items
将具有与lat long相同的位置非常精确,因此几乎没有Items
将共享此节点,所以它真的是一个节点吗?
4这样做的方法真的是这样,而不是嵌套它们吗?
米
答案 0 :(得分:5)
你自己的分析基本上是正确的。我会选4号。
以下是关于为什么2号不是个好主意的原因。逻辑上:项目的位置属于该项目的节点,而不是与该项目的特定关系。实际上:如果对象更改了所有权,则不必将其位置复制到新关系,并且查询项目的位置应该像获取其节点一样快速和简单。