Sì, è praticamente tutto. Recupera tutte le entità che desideri sommare e sommale nella tua app. Non c'è SUM
in GQL.
Se quello che stai cercando di ottenere è trovare il punteggio medio per un'entità, c'è un modo migliore.
class RateableThing(db.Model):
num_ratings = db.IntegerProperty()
avg_rating = db.FloatProperty()
Trovare valutazione media della cosa è una semplice ricerca, e l'aggiunta di un nuovo rating è solo:
thing.avg_ratings = ((thing.avg_ratings * thing.num_ratings) + new_rating)/thing.num_ratings + 1
thing.num_ratings += 1
thing.put()
Il linguaggio prevalente del datastore App Engine è quello di fare il lavoro il più possibile su scrivi, e il meno possibile in lettura, poiché le letture accadranno molto più spesso.
fonte
2010-04-21 21:02:41
intendi in ogni scrittura per calcolare il voto e scriverlo su ogni scrittura e non calcolare su letto? chiama la cosa.num_ratings ottiene l'intera somma delle entità? o devo solo i numeri su ogni scrittura? perché mi sono trasferito in un archivio dati per duplicare e salvare le chiavi per ogni classificazione in modo da poter sapere chi ha valutato cosa e così via. non voglio un'entità somma che continua ad aggiornare. È questo che vuoi dire? – Alon
'num_ratings' è il numero di volte in cui la cosa è stata valutata. Quindi, ogni volta che aggiungi una valutazione, incrementa 'num_ratings' - se vuoi tenere traccia di chi ha votato, puoi mantenere una' ListProperty' degli utenti. Se si desidera tenere traccia di chi ha valutato, * e cosa hanno valutato *, un oggetto 'ListProperty' di' Rating' (utente e punteggio). Ma continua a mantenere la valutazione semplice (num_ e avg_) per evitare di calcolare su ogni lettura della valutazione della cosa. Solo quando si desidera esaminare i dati di valutazione completi si dovrebbe andare nella lista delle valutazioni degli utenti. –
quindi dovrei sempre tenere una tabella riepilogativa per la valutazione in cui sono aumentata la valutazione su ciascuna classificazione dell'utente per il calcolo. grazie mille :) – Alon