2016-05-12 4 views
0

Während des Prototyping habe ich eine Reihe von Facebook-Posts stapelweise in eine Tabelle importiert. Nach der ersten Partie habe ich ein Bulk-Update, um die "created_date" Spalt von String in einen nativen Zeitstempel (mit der handlichen r.ISO8601-Funktion) zu konvertieren:Abfrage einer Tabelle und nur übereinstimmende Zeilen, in denen ein Feld mit "STRING" übereinstimmt

r.db('db').table('table').update({'created_date': r.ISO8601(r.row('created_date'))

Beim zweiten Durchgang, wenn ich versuche, dieses Update zu wiederholen, Der Server gibt einen Fehler aus, da nicht alle Zeilenfelder vom Typ STRING sind (dh die zuvor konvertierten), was ISO861 erwartet.

Ich habe schon versucht, auf r.row('created_date').typeOf() == "STRING" zu filtern, bekam aber keine Übereinstimmungen. Ich kann keine andere Möglichkeit finden, den STRING-Typ als Objekt und nicht als eine literale Zeichenfolge zu bezeichnen.

Ich weiß, dass ich diese importieren und die if/else-Logik in Code ausführen konnte, aber ich bin interessiert zu verstehen, ob es eine native Abfrage gibt, die Zeilen ausfiltert, die einem bestimmten Typ entsprechen.

Antwort

2

Sie haben eq zu verwenden, um wie folgt zu vergleichen:

r.row('created_date').typeOf().eq("STRING") 

Mit == funktioniert nur auf einige Sprachunterstützung Betreiber overrding.

+0

Dank @kureikain, arbeitete so wie gewünscht. –

Verwandte Themen