Firebase在SQL中的连接、分组和聚合等效项

Firebase在SQL中的连接、分组和聚合等效项,sql,firebase,firebase-realtime-database,google-cloud-functions,nosql-aggregation,Sql,Firebase,Firebase Realtime Database,Google Cloud Functions,Nosql Aggregation,我来自SQL,第一次尝试Firebase。Firebase是否可以执行此查询 SELECT name, AVG(rating) as avgRating FROM restaurants JOIN reviews ON restaurants.ID = reviews.restaurantsID GROUP BY restaurants.ID ORDER BY avgRating; 如果是的话,你能给我一个链接到一个博客、教程或者一个关于Firebase的高级课程吗?最

我来自SQL,第一次尝试Firebase。Firebase是否可以执行此查询

SELECT
    name,
    AVG(rating) as avgRating
FROM restaurants
JOIN reviews
    ON restaurants.ID = reviews.restaurantsID
GROUP BY restaurants.ID
ORDER BY avgRating;

如果是的话,你能给我一个链接到一个博客、教程或者一个关于Firebase的高级课程吗?最好是Firebase for Web

联接是所有NoSQL样式数据库的主要弱点。这源于它们的工作方式:查询只是对JSON存储的直接读取。这也给了他们力量:速度和可扩展性

如果您使用的是Firebase实时数据库,那么最好的方法是执行两个查询。看起来是这样的:

firebase.db.ref("/path/to/ref").on("value", (snapshot) => {
  if(snapshot.val()){
    firebase.db.ref(`/second/ref/${snapshot.val().joinValue}`).on("value", (snapshot2) => {
      console.log(snapshot2.val()) // Do something
    }
  }
})
最近,Firebase发布了他们的新版本,该版本的实现是为了解决实时版本的一些弱点。但是,我不认为连接问题是专门解决的,最终解决方案可能与我的示例类似


最后,我经常使用Firebase,我怀疑他们可能正在使用GraphQL启发的解决方案,该解决方案将是基于SQL的数据库的完整接口。我预计在未来12个月内,这一数字会下降。

试图将SQL查询直接映射到像Firebase这样的NoSQL数据库会导致问题。我建议在阅读和观看之后重新评估您的用例。