Firebase按两个区域查询数据

时间:2018-04-01 17:04:35

标签: android firebase firebase-realtime-database

{
  "key1" : {
    "region": 2,
    "text": "This is text"
  },
  "key2" : {
    "region": 8,
    "text": "This is text"
  }.
  "key3" : {
    "region": 6,
    "text": "This is text"
  }
}

我想获得区域为2和8的JSON对象。

2 个答案:

答案 0 :(得分:1)

试试这个:

DatabaseReference ref=FirebaseDatabase.getInstance().getReference();
Query q=ref.orderByChild("region").startAt(2).endAt(8);
q.addValueEventListener(..){//..}

假设随机密钥是直接子节点到根节点。

答案 1 :(得分:0)

如果您想使用一系列区域,意味着从28的所有区域,其中还包括所有区域,如(3,4,5,6和7),彼得的答案非常合适。

但是,如果您只想使用区域28,我建议您复制数据。对于Firebase而言,这是一种非常常见的做法,名为denormalization,为此,我建议您观看此视频,Denormalization is normal with the Firebase Database

当您复制数据时,有一件事需要记住。与添加数据的方式相同,您需要对其进行维护。换句话说,如果你想更新/拒绝一个项目,你需要在它存在的每个地方都这样做。

在您的情况下,您应该考虑扩充数据结构以允许反向查找,如下所示:

regionTwoAndEight
  |
  --- "key1": true
  |
  --- "key2": true