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" <[email protected]> 
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

Reply via email to