Skip to content

Instantly share code, notes, and snippets.

@brwnll
Created Dec 11, 2013
Embed
What would you like to do?
Intent: Convert "day" values to Numbers, to be able to run comparison operators against the row.
// 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"
}
@brwnll
Copy link
Author

brwnll commented Dec 11, 2013

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).

@neumino
Copy link

neumino commented Dec 11, 2013

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") } 
  })

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment