2010-07-26 5 views
7

Ich habe ein Modell, das wie folgt aussieht:Abfragen von Entitäten mit fehlenden Eigenschaften im App-Modul Datenspeicher?

class Example (db.Model) : 
row_num = db.IntegerProperty(required=True) 
updated = db.IntegerProperty() 
... 
... 

Nun, wenn ich Werte speichern, kann ich nicht den Wert für die aktualisierte Eigenschaft jedes Mal, füllen die, dass es möglicherweise nicht vorhanden in einigen Einheiten impliziert.

Ich möchte eine Datenspeicherabfrage erstellen, so dass ich alle Entitäten des Typs Beispiel erhalten kann, für die die Eigenschaft nicht aktualisiert wurde.

Wie mache ich das?

p.s. Ich weiß, dass ich einen Standardwert festlegen und dann abfragen kann. Aber das Problem ist, ich habe über 3 Millionen Einheiten und aktualisiert werden nur für 1% von ihnen markiert, so will ich nicht so viel Speicherplatz im Datenspeicher verschwenden, indem Sie den Rest auf 0.

Antwort

7

In GQL, Objekte, die Haben Sie keinen Wert für eine Eigenschaft, der von Abfragen für diese Eigenschaft nicht zurückgegeben werden kann, ist das, was Sie fordern, ohne einen Standardwert nicht möglich.

Referenz: Abschnitt "Entitäten ohne gefilterte Eigenschaft werden nie von einer Abfrage zurückgegeben" auf this page.

+0

Sie sagen also, dass keine Workaround möglich ist? – demos

+1

Korrekt, weil alles, was Sie versuchen, das nicht existierende Feld zu referenzieren, einen Index für dieses Feld verwenden wird, was zur Folge haben wird, dass alle Objekte ausgelassen werden, die keinen Wert für dieses Feld haben. – Amber

+1

Die Problemumgehung besteht darin, einen Standardwert für die aktualisierte Eigenschaft anzugeben und nach diesem Wert abzufragen. –