You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@couchdb.apache.org by Rajkumar S <ra...@gmail.com> on 2009/12/17 16:25:05 UTC

map from multiple docs

Hello,

I have a db which stores mail logs. Each log entry is stored as a
single document. for example (just the relevant fields):

{
   "_id": "2b93d795d483b1ca352f6596c5497c7f",
   "_rev": "1-1463054967",
   "queueid": "03DBB81E1F",
   "numrecipients": 1,
   "fromemail": "officefile631@yahoo.com",
   "logtype": "message_from"
}

{
   "_id": "5ade1602d52f75a4b35ab6c03aa5d8d9",
   "_rev": "1-2573414463",
   "queueid": "03DBB81E1F",
   "rcptemail": "joe@swinepro.info",
   "logtype": "message_delivery",
}

I want to get the queueid of all mails sent from yahoo.com domain to
swinepro.info domain.

If all entries with same queueid was in the same doc I can write a map
with key like ["yahoo.com","swinepro.info"] so that in my url I just
use startkey as ["yahoo.com","swinepro.info"] to get all mails from
"yahoo.com" to "swinepro.info.

Here my problem is that sender and recipient are in two different
docs, with queueid being the common key. Given this data structure is
there any way I can get the data out in the way I want?

Any help will be very much appreciated.

regards,

raj

Re: map from multiple docs

Posted by Daniel Truemper <tr...@googlemail.com>.
Hi,

> I have a db which stores mail logs. Each log entry is stored as a
> single document. for example (just the relevant fields):
> 
> {
>   "_id": "2b93d795d483b1ca352f6596c5497c7f",
>   "_rev": "1-1463054967",
>   "queueid": "03DBB81E1F",
>   "numrecipients": 1,
>   "fromemail": "officefile631@yahoo.com",
>   "logtype": "message_from"
> }
> 
> {
>   "_id": "5ade1602d52f75a4b35ab6c03aa5d8d9",
>   "_rev": "1-2573414463",
>   "queueid": "03DBB81E1F",
>   "rcptemail": "joe@swinepro.info",
>   "logtype": "message_delivery",
> }
I think you need to do more complex preprocessing of the log files. If you use the queueid as your document's id you could check if the document already exists and then add the second log event to the existing document. Assuming that both log events are close together you shouldn't even create the document before you have come across both events in the log. Then you would end up with something like that:

{
 "_id":"03DBB81E1F",
  "numrecipients": 1,
  "fromemail": "officefile631@yahoo.com",
  "rcptemail": "joe@swinepro.info",
}

A query for this would be simple.

HTH
Daniel