-
-
Save brwnll/7915142 to your computer and use it in GitHub Desktop.
// Data sample | |
[ | |
{ | |
"end": "23:00:00" , | |
"day": "5" , | |
"id": "003b2c9b-fdae-4112-b29b-6081ae138060" , | |
"start": "16:00:00" | |
}, | |
{ | |
"end": "17:00:00" , | |
"day": "6" , | |
"id": "00466316-585f-4578-95ab-99431ed2bece" , | |
"start": "12:00:00" | |
}, | |
{ | |
"end": "18:00:00" , | |
"day": "0" , | |
"id": "067fc39b-2fe8-42d1-a223-533a73998c6b" , | |
"start": "12:00:00" | |
} | |
] | |
// Attempted query | |
r.table("hours") | |
.filter({"id":"003b2c9b-fdae-4112-b29b-6081ae138060"}) | |
.update(function(doc) { return { day : doc("day") + 1 } }) | |
// Result | |
{ | |
"end": "23:00:00" , | |
"day": "var_21("day")1" , | |
"id": "003b2c9b-fdae-4112-b29b-6081ae138060" , | |
"start": "16:00:00" | |
} |
Thanks, appreciate the help. But when I attempt that query I get an error:
"first_error": "Expected type STRING but found NUMBER." ,
Using
r.table("hours")
.filter({"id":"003b2c9b-fdae-4112-b29b-6081ae138060"})
.update(function(doc) { return { day : doc("day").add(1) } })
Secondarily, I was also looking at the datetime support (pretty awesome), maybe you have some recommendations on queries or data modeling from a ReQL perspective.
What I have is a large number of businesses, with operating hours. (Above is a snippet of the hours table; day (0-6), open/start (24 hr time), close/end (24 hr time).
What I was attempting to glean from the docs: Is there a way for me to make use of ReQL date support when my days are not specific dates, but instead a reference to a day each week. My need will be to do simple, specific time lookups (eg: Which businesses are open Friday at 10pm).
You may want to convert all the day
fields to number first
r.table("hours").update( {
day: r.row("day").coerceTo("NUMBER")
})
And then run @mglukhovsky query.
If you want to keep strings for the day
field, you can use this query:
r.table("hours")
.filter({"id":"003b2c9b-fdae-4112-b29b-6081ae138060"})
.update(function(doc) {
return { day : doc("day").coerceTo("NUMBER").add(1).coerceTo("STRING") }
})
Note that to get one single document by primary key, you can also use
get
instead offilter
-- of course,filter
allows for much more interesting expressions (and finding documents by values other than the primary key).Also, if you're working with dates and times, you may want to read more about RethinkDB's support for dates: http://rethinkdb.com/docs/dates-and-times/