2016-08-15 4 views
2

私はphp/mysqlのバックグラウンドから来ており、jsonのデータとfirebaseのクエリはまだかなり新しくなっています。今、私はReact Nativeで作業しており、データのコレクションを持っていて、キーの1つに整数が格納されています。私はすべての整数の平均を求めたい。私はどこから始めるのですか?ネイティブの火災ベース '平均'クエリに反応しますか?

私はこの前にFirebases snapshot.numChildren関数を使用しましたが、このjsonの世界ではもう少し詳しく知っていますが、どんな種類のヘルプも高く評価されます。ありがとう!

+1

NoSQLを使い始める前にお読みください:[NoSQLデータモデリング](https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/) –

答えて

4

したがって、すべてのデータを返して平均を判断できることがわかります。私はこれを推測しています。大量のデータを収集し、平均化するたびにノード全体を返さないのが理想的です。

このデータの内容と更新方法によって異なりますが、1つのオプションは、コレクションが追加または変更されるたびに更新される別個のノードを単純に持つことです。

ここにいくつかの荒い擬似コードがあります。たとえば、データベースは次のように見える場合:アイテムが更新されたとき、あなたはメタデータの計算を実行し

var numerator = average * number_of_items + newItem.number; 
number_of_items++; <-- this is your new number of items 
numerator/number_of_items; <-- this is your new average 

:新しいアイテムが追加されたときに

database 
| 
+--collection 
| | 
| +--item_one (probably a uid like -k2jduwi5j5j5) 
| | | 
| | +--number: 90 
| | 
| +--item_two 
| | | 
| | +--number: 70 
| 
+--collection_metadata 
| | 
| +--average: 80 
| | 
| +--number_of_items: 2 

はその後、あなたは、メタデータの計算を実行します:

var numerator = average * number_of_items - changedItem.oldNumber + changedItem.newNumber; 
numerator/number_of_items; <-- this is your new average 

このデータが必要な場合は、常にこのデータが必要です。

+0

私はアイデアが好きですあなたはここにいます!私は将来のプロジェクトでそれを最も確実に使用します。この特定のものについては、コレクション全体を返して平均を見つけるのが理想的かもしれないと思います。そのベストプラクティスは何ですか? (現時点でのパフォーマンスの問題には関係ありません) – gbland777

+0

その場合は、ノード全体を返し、すべての値を合計した後、項目数で除算します。おそらく、あなたが戻ってくるオブジェクトの各ループのためです。 –

+0

私が望むすべての値の合計を得るにはどうしたらいいですか?たとえば、item_one.numberとitem_two.numberの合計を取得します。 – gbland777

関連する問題