简体   繁体   English

如何在 Xamarin Android 中将 sql 查询应用于 Firebase?

[英]How apply sql query to Firebase in Xamarin Android?

I need get return data from Firebase.我需要从 Firebase 获取返回数据。 In Sql query it would be like this:在 Sql 查询中,它会是这样的:

Select * from * Group By field1, field2 HAVING count(*)=1

How to apply above to FireBase in Xamarin Android.如何将以上应用到 Xamarin Android 中的 FireBase。 So I have node "chats", here I want retrieve record only not repeated on field "user_email":所以我有节点“聊天”,在这里我只想检索记录,而不是在字段“user_email”上重复:

chats
 |-...
   |---date_and_time:
   |---user_email:
 |-...
   |---date_and_time:
   |---user_email:
 ... 

at this moment I get whole data from "chat", here code:此时我从“聊天”中获取了全部数据,这里是代码:

public List<MessageContent> listOfContacts = new List<MessageContent>();
FirebaseClient firebase;
...
firebase = new FirebaseClient(GetString(Resource.String.database_name));
...
var firebaseContacts = await firebase.Child("chats")
                                                 .OnceAsync<MessageContent>();
            foreach (var item in firebaseContacts)
                listOfContacts.Add(item.Object);  

Firebase's realtime database is a NoSQL database. Firebase 的实时数据库是一个 NoSQL 数据库。 Trying to directly map a SQL query to it is going to give you a rough time.尝试将 SQL 查询直接映射到它会给您带来麻烦。 I highly recommend reading NoSQL data modeling and watching Firebase for SQL developers .我强烈建议阅读NoSQL 数据建模并观看面向 SQL 开发人员的 Firebase

In NoSQL databases you typically get more complex write operations and in return get more performant/scalable read operations.在 NoSQL 数据库中,您通常会获得更复杂的写入操作,而作为回报,您会获得更高性能/可扩展的读取操作。 So in your case, that could mean that you actually store a list of the records that you're trying to query and update that list with every write.因此,在您的情况下,这可能意味着您实际上存储了您尝试查询并在每次写入时更新该列表的记录列表。

Some previous questions that deal with similar scenarios can be found in this list .可以在此列表中找到一些以前处理类似场景的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM