Json 从firebase中检索对象,该对象以有效的方式在其属性中包含确切的项
我正在使用Firebase和Xamarin表单部署应用程序。我正试图找出如何获得一个(或多个)符合一个条件的对象。假设我有一个字符集合,每个字符都有不同的属性,比如名称、年龄、城市,最后一个属性是一个字符串数组,表示它们有什么样的工具 例如,在集合中包含以下三个字符:Json 从firebase中检索对象,该对象以有效的方式在其属性中包含确切的项,json,firebase,performance,firebase-realtime-database,xamarin.forms,Json,Firebase,Performance,Firebase Realtime Database,Xamarin.forms,我正在使用Firebase和Xamarin表单部署应用程序。我正试图找出如何获得一个(或多个)符合一个条件的对象。假设我有一个字符集合,每个字符都有不同的属性,比如名称、年龄、城市,最后一个属性是一个字符串数组,表示它们有什么样的工具 例如,在集合中包含以下三个字符: { 'characters': { 'char001': { 'name': '
{ 'characters':
{
'char001': {
'name': 'John',
"tools":[ "knife", "MagicX", "laser", "fire" ]
},
'char002': {
'name': 'Albert',
"tools":[ "MagicX" ]
},
'char003': {
'name': 'Chris',
"tools":[ "pistol", "knife", "magicX" ]
}
}
}
我想检索拥有刀和magicX的角色,因此查询结果为:char001和char003
也就是说,我有大量的数据,比如集合中的+10.000个字符,加上每个字符在工具中最多可以有10项
如果属性tools中只有一个字符串,但将tools作为数组,我可以检索对象。我必须迭代抛出每个字符的所有项,并查看其中有多少具有刀,然后使用相同的过程查找具有magicX的对象,然后将两个查询合并,得到结果。就速度而言,这太慢了
我想直接在后端执行,只接收正确的数据
- 如何在firebase中执行查询?
干杯。在Firebase中,这很简单,假设角色是一个集合 如果是这样的话,一种方法是这样构造“charachter”文档:
'char001': {
name: "John",
tools: {
knife: true,
MagicX: true,
laser: true
}
}
这样,您就可以执行复合相等查询,并使用正在搜索的工具返回所有字符。比如:
db.collection('characters').where('tools.knife', '==', true).where('tools.magicX', '==', true)
请注意,在一个查询中最多可以组合10个相等子句
我希望这能有所帮助,请搜索“firestore复合查询”以获取更多信息。您的第二个问题与堆栈溢出无关。我建议编辑你的问题,把注意力集中在一个清晰的问题上,否则它可能会被关闭。@DougStevenson谢谢你的建议,我已经编辑好了。谢谢你的输入。我要试试看!