推荐使用[python升降机]进行查询的嵌套数据结构
我正在收集一组文本文档,并构建一个json对象,以便使用python升降机进行查询。我目前有如下数据推荐使用[python升降机]进行查询的嵌套数据结构,python,nosql,Python,Nosql,我正在收集一组文本文档,并构建一个json对象,以便使用python升降机进行查询。我目前有如下数据 [ [ {name:dad}, {name:son, dob:2/24/2000} ], [ {name:forever_alone, cats:12} ] ] 基于dob键的存在,我想做两个不同的查询:1)获取儿子,2)获取包含儿子(父亲和儿子)的家庭。据我所知,在Street中,字典列表并没有得到很好的支持
[
[
{name:dad},
{name:son, dob:2/24/2000}
],
[
{name:forever_alone, cats:12}
]
]
基于dob
键的存在,我想做两个不同的查询:1)获取儿子,2)获取包含儿子(父亲和儿子)的家庭。据我所知,在Street中,字典列表并没有得到很好的支持。暂且不讨论这个问题,即升降机还不允许对并非每个记录上的字段进行查询,对于升降机来说,什么更好,什么更好的结构
字典的列表
[
{
0:{name:dad},
1:{name:son, dob:2/24/2000}
},
{
0:{name:forever_alone, cats:12}
}
]
{18283923:
[
{name:dad},
{name:son, dob:2/24/2000}
],
18283927:
[
{name:forever_alone, cats:12}
]
}
还是一本字典列表的字典
[
{
0:{name:dad},
1:{name:son, dob:2/24/2000}
},
{
0:{name:forever_alone, cats:12}
}
]
{18283923:
[
{name:dad},
{name:son, dob:2/24/2000}
],
18283927:
[
{name:forever_alone, cats:12}
]
}
并且,给定一个理想的嵌套数据结构,返回1)子和2)包含子的族的两个查询是什么?[免责声明:这里是升降机维护器] 目前,升降机不支持此类请求,因为升降机将尝试查找每个对象上的查询字段,如果字段不存在,将引发错误 目前对这一问题的支持也不好 关于缺少字段的问题已经打开, 但无论如何,您的数据结构并不真正适合此类查询 更好的数据结构是:
families = [
{
'id': 1,
'members': [
{'name': 'dad'},
{'name': 'son', 'dob':'2/24/2000'}
]
},
{
'id': 2,
'members': [
{'name': 'forever_alone', 'cats': 12}
]
}
]
然后,在解决了之前的链接问题后,您可以使用以下方式进行查询:
Family = lifter.models.Model('Family')
manager = Family.load(families)
# get families with son/dob members
son_dob_families = manager.filter(Family.members.name == 'son', Family.members.dob.exists())\
.values(Family.id, Family.members)
# keep only son members with dob
Member = lifter.models.Model('Member')
members = [member for family in son_dob_families for member in family['members']]
sons_with_dob = Member.load(members).filter(Member.name == 'son', Member.dob.exists())
虽然这是一个理论上的API,但尚未实现。在
dad
和son
之间是否存在某种类型的关系,这就是为什么它们被分组在同一个数组中的原因?是的,它们是同一家族的成员。数据来自于对一堆文本文件(实际上是asana.com任务)的解析,它们位于同一个文件中。