如何使用Firestore获得城市中的最大人口?

时间:2018-11-02 08:55:01

标签: java android firebase google-cloud-firestore

请帮助我。我在文档中有这样的内容:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='parent'>
  <div class='top' id='top'>TOP</div>
  <div class='left'>LEFT</div>
  <div class='right'>RIGHT</div>
</div>

如何在模拟器中显示人口最多的城市?我使用:

cities
 \
  - San Francisco
        \
         - "population": 860000
 \
  - Los Angeles
        \
         - "population": 3900000
 \
  - San Francisco
        \
         - "population": 680000

但是不起作用。如何从列表中知道人口最多的城市?

1 个答案:

答案 0 :(得分:0)

  

想在Firestore中获得最大的城市人口吗?

只需使用如下所示的查询:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference citiesRef = rootRef.collection("cities");
Query query = citiesRef.orderBy("population", Direction.DESCENDING).limit(1);

根据orderBy()属性,调用population方法对城市降序进行排序,并调用limit(1)将结果限制为仅一个城市,即人口最多的城市

编辑:

从您的另一个question(我已经为您提供了答案)中得知,将数据添加到数据库的方式是使用add()方法。 这意味着每次添加新城市时,都会生成新的文档ID。换句话说,文档的ID是随机生成的密钥,而不是,就像我在您的架构中看到的那样。

因此,如果您使用的是官方文档中的示例,则在population属性旁边,您可能还会拥有该城市的name

要显示人口最多的城市的名称,请使用以下代码行:

query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            for (QueryDocumentSnapshot document : task.getResult()) {
                if (document != null) {
                    String name = document.getString("name");
                    Log.d(TAG, name);
                }
            }
        }
    }
});

您的logcat中的输出将是:

Los Angeles