Not sure how you are querying, but are you doing the equivalent to this? startkey and endkey should be expressed as JSON

curl -g 'http://localhost:5984/orders/_design/Order/_view/by_users_after_time?startkey=["f98ba9a518650a6c15c566fc6f00c157","2012-01-01T11:40:52.280Z"]&endkey=["userid",{}]'


Jim Klo
Senior Software Engineer
Center for Software Engineering
SRI International
p. 805.542.9330 x121
m.  805.286.1350
f. 805.546.2444

On Feb 13, 2012, at 10:27 AM, Mathieu Castonguay wrote:

I tried reversing the keys with no luck. I still get timestamps that are in
the past (before the startKey).

On Sat, Feb 11, 2012 at 6:37 PM, James Klo <jim.klo@sri.com> wrote:

Reverse the key. [userid, time]

CouchDB is all about understanding collation. Basically views are
sorted/grouped from left to right alphanumeric. See
http://wiki.apache.org/couchdb/View_collation for the finer details as
there are more rules than the basics I mention.

so the reversal sorts the view by userid first, then date as string.
Instead of sorting by dates then userids.

You do it this way because you know the exact userid, but not the exact
date. If you knew the exact date, but not the userid, what you have
currently would be better.

- Jim


Sent from my iPad

On Feb 11, 2012, at 1:54 PM, "Mathieu Castonguay" <
mcastonguay@justlexit.com> wrote:

I have a simple document named Order structure with the fields id, name,
userId and timeScheduled.

What I would like to do is create a view where I can find the
document.idfor those who's userId is some value and timeScheduledis
after a given date.

My view:

"by_users_after_time": {
     "map": "function(doc) { if (doc.userId && doc.timeScheduled) {
emit([doc.timeScheduled, doc.userId], doc._id); }}"
 }

If I do

localhost:5984/orders/_design/Order/_view/by_users_after_time?startKey="[2012-01-01T11:40:52.280Z,f98ba9a518650a6c15c566fc6f00c157]"
I get every result back. Is there a way to access key[1] to do an if
doc.userId == key[1] or something along those lines and simply emit on
the
time?

This would be the SQL equivalent of select id from Order where userId =
"f98ba9a518650a6c15c566fc6f00c157" and timeScheduled >
2012-01-01T11:40:52.280Z;

I did quite a few Google searches but I can't seem to find a good
tutorial
on working with multiple keys. It's also possible that my approach is
entirely flawed so any guidance would be appreciated.

Thank you,

Matt