我有一个Firebase数据库,基本上如下所示:
最终,我试图捕捉“趋势”信息。 “趋势”将构成:
我在我的数据库中使用FirebaseUI(最新版本3.0.1)。我的查询如下:
Query query = FirebaseDatabase.getInstance()
.getReference()
.child("Polls")
.limitToLast(3)
.orderByChild("vote_count");
FirebaseRecyclerOptions<Poll> options = new FirebaseRecyclerOptions.Builder<Poll>()
.setQuery(query, Poll.class)
.build();
mFireAdapter = new FirebaseRecyclerAdapter<Poll, PollHolder>(options) {
@Override
protected void onBindViewHolder(final PollHolder holder, int position, Poll model) {
holder.mPollQuestion.setText(model.getQuestion());
String voteCount = String.valueOf(model.getVote_count());
//TODO: Investigate formatting of vote count for thousands
holder.mVoteCount.setText(voteCount);
Picasso.with(getActivity().getApplicationContext())
.load(model.getImage_URL())
.fit()
.into(holder.mPollImage);
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent toClickedPoll = new Intent(getActivity(), PollHostActivity.class);
toClickedPoll.putExtra("POLL_ID", mFireAdapter.getRef(holder.getAdapterPosition()).getKey());
startActivity(toClickedPoll);
}
});
}
@Override
public PollHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.latest_item,parent,false);
return new PollHolder(v);
}
};
希望首先看到最近添加的孩子,然后通过vote_count孩子订购这些孩子。不幸的是,这个查询没有正确处理,因为它首先由子进行排序,然后限制为3。
我的查询可能吗? Cloud Firestore的更新是否会解决?
答案 0 :(得分:1)
要实现此目的,您需要使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("Polls").orderByChild("vote_count").limitToLast(3);
query.addValueEventListener(/* ... */);
答案 1 :(得分:1)
在orderByChild("vote_count")
之前添加limitToLast(3)
以解决您当前的情况,您需要首先对点进行排序,即{1,2,3,5,6,10,15}然后拍摄最后3点分{6,10,15}。
喜欢这个
Query query = FirebaseDatabase.getInstance()
.getReference()
.child("Polls")
.orderByChild("vote_count")
.limitToLast(3);