incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stephan Bardubitzki <step...@bardubitzki.com>
Subject Re: startkey
Date Tue, 16 Jul 2013 22:52:10 GMT
Hi Paul,

unfortunately, I'm working only occasionally with CouchDB and hope this 
will change when I have more time to work on my own projects.

Your advise was really helpful and appreciated. What I came up with is a 
map function like this:

  function(doc) {
     if (doc.kml_id && doc.marker && doc.language) {
         for (language in doc['language']) {
             var o = {};
             o.description = doc.language[language];
             o.gps = doc.gps;
             emit([language, doc.kml_id, doc.marker], o);
         }
     }
}

startkey: ["fr", id, 0]. endkey: ["fr", id, {}]

gives me all the data needed either in the key or value argument and 
sorted as needed.

Thanks for bearing with me,
Stephan


On 13-07-16 12:45 PM, Paul Davis wrote:
> As the value (the second argument to emit).
>
>
> On Tue, Jul 16, 2013 at 2:45 PM, Paul Davis <paul.joseph.davis@gmail.com>wrote:
>
>> In that case I'd just emit the part of the doc for the language for each
>> row.
>>
>>
>> On Tue, Jul 16, 2013 at 1:00 PM, Stephan Bardubitzki <
>> stephan@bardubitzki.com> wrote:
>>
>>> Got it, however, it is not quite what I was hoping to accomplish.
>>>
>>> The language object of the each doc has 12 languages and
>>> include_docs=true will response all of them. What can I do to get all doc
>>> properties but just the language 'fr' property, for example, to save on
>>> data usage on mobile devices?
>>>
>>>
>>>
>>> On 13-07-15 09:00 PM, Paul Davis wrote:
>>>
>>>> Yes, the second example I gave should accomplish that.
>>>>
>>>> The {} is an empty JSON object which should sort higher than any value
>>>> you
>>>> emit assuming you're not emitting complicated objects which is not
>>>> suggested due to surprising sort results.
>>>>
>>>>
>>>> On Mon, Jul 15, 2013 at 10:52 PM, Stephan Bardubitzki <
>>>> stephan@bardubitzki.com> wrote:
>>>>
>>>>   Just for clarification, I'm looking after one map function that can
>>>>> create
>>>>> a view where all docs that have the same doc.kml_id, are sorted by
>>>>> doc.marker and only contains the description for a particular language
>>>>> from
>>>>> the doc.language array.
>>>>>
>>>>> Is this possible with one map function?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On 13-07-15 07:15 PM, Stephan Bardubitzki wrote:
>>>>>
>>>>>   And I need the doc.marker too, sorted 0...n? Any example?
>>>>>> What are the {} for?
>>>>>>
>>>>>> Thanks again.
>>>>>> Stephan
>>>>>>
>>>>>> On 13-07-15 07:00 PM, Paul Davis wrote:
>>>>>>
>>>>>>   A couple examples might be something like:
>>>>>>> All rows for French:
>>>>>>>
>>>>>>> startkey: ["fr"]
>>>>>>> endkey: ["fr",{}]
>>>>>>>
>>>>>>> All rows for a specific kml_id:
>>>>>>>
>>>>>>> starkey: ["fr", id]
>>>>>>> endkey: ["fr", id, {}]
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Jul 15, 2013 at 8:58 PM, Paul Davis <
>>>>>>> paul.joseph.davis@gmail.com
>>>>>>>
>>>>>>>> **wrote:
>>>>>>>>
>>>>>>>    Exactly like that yeah.
>>>>>>>
>>>>>>>> On Mon, Jul 15, 2013 at 8:55 PM, Stephan Bardubitzki <
>>>>>>>> stephan@bardubitzki.com> wrote:
>>>>>>>>
>>>>>>>>    Thanks for your response Paul. I think I'm missing something
>>>>>>>> important.
>>>>>>>>
>>>>>>>>> How do I tell the view that I just need fr - language
and not en,
>>>>>>>>> de,
>>>>>>>>> es ...
>>>>>>>>>
>>>>>>>>> startkey: ["fr", id, 0] ?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 13-07-15 03:26 PM, Paul Davis wrote:
>>>>>>>>>
>>>>>>>>>    You'll need to add an element to the key to emit the
language.
>>>>>>>>> Pseudo
>>>>>>>>>
>>>>>>>>>> code:
>>>>>>>>>>
>>>>>>>>>> for language in doc["languages"]:
>>>>>>>>>>          emit([language, doc.kml_id, doc.marker],
1)
>>>>>>>>>>
>>>>>>>>>> Also note that its generally not a good idea to emit
the doc as the
>>>>>>>>>> value.
>>>>>>>>>> You should prefer to use include_docs=true in the
query string.
>>>>>>>>>> Emitting
>>>>>>>>>> 1
>>>>>>>>>> allows you to specify "_sum" as a reduce function
to get row counts
>>>>>>>>>> for
>>>>>>>>>> specific start/end key pairs.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Mon, Jul 15, 2013 at 5:07 PM, Stephan Bardubitzki
<
>>>>>>>>>> stephan@bardubitzki.com> wrote:
>>>>>>>>>>
>>>>>>>>>>     Hi there,
>>>>>>>>>>
>>>>>>>>>>   this map function
>>>>>>>>>>> "map": "function(doc) { if (doc.kml_id &&
doc.marker) {
>>>>>>>>>>> emit([doc.kml_id,
>>>>>>>>>>> doc.marker], doc) } }"
>>>>>>>>>>>
>>>>>>>>>>> and this startkey
>>>>>>>>>>>
>>>>>>>>>>> startkey: [id, 0]    --> sorting doc.marker
>>>>>>>>>>>
>>>>>>>>>>> let me retrieve data from a couch as needed.
>>>>>>>>>>>
>>>>>>>>>>> Now I got the task to add more languages beside
English for
>>>>>>>>>>> description
>>>>>>>>>>> properties in an array structure like this
>>>>>>>>>>>
>>>>>>>>>>> "language": [
>>>>>>>>>>>         {
>>>>>>>>>>>             "en":{
>>>>>>>>>>>
>>>>>>>>>>>                     }
>>>>>>>>>>>         },
>>>>>>>>>>>         {
>>>>>>>>>>>              "fr": {
>>>>>>>>>>>
>>>>>>>>>>>                      }
>>>>>>>>>>>         }
>>>>>>>>>>> ]
>>>>>>>>>>>
>>>>>>>>>>> I stuck in figuring out a startkey that let me
retrieve the sorted
>>>>>>>>>>> data
>>>>>>>>>>> only for a particular language.
>>>>>>>>>>>
>>>>>>>>>>> Any advice would be really appreciated.
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>> Stephan
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>     ------------------------------******--
>>>>>>>>>>>
>>>>>>>>>>>   Spam/Virus scanning by CanIt Pro
>>>>>>>>>> For more information see
>>>>>>>>>> http://www.kgbinternet.com/******SpamFilter.htm<http://www.kgbinternet.com/****SpamFilter.htm>
>>>>>>>>>> <http://www.**kgbinternet.com/**SpamFilter.**htm<http://www.kgbinternet.com/**SpamFilter.htm>
>>>>>>>>>> <http://www.**kgbinternet.com/**SpamFilter.htm<http://kgbinternet.com/SpamFilter.htm>
>>>>>>>>>> <http://www.**kgbinternet.com/SpamFilter.htm<http://www.kgbinternet.com/SpamFilter.htm>
>>>>>>>>>> **>
>>>>>>>>>> **>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> To control your spam filter, log in at
>>>>>>>>>> http://filter.kgbinternet.com
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>    ------------------------------****--
>>>>>>>>>>
>>>>>>>>> Spam/Virus scanning by CanIt Pro
>>>>>>> For more information see
>>>>>>> http://www.kgbinternet.com/****SpamFilter.htm<http://www.kgbinternet.com/**SpamFilter.htm>
>>>>>>> <http://www.**kgbinternet.com/SpamFilter.htm<http://www.kgbinternet.com/SpamFilter.htm>
>>>>>>> **>
>>>>>>>
>>>>>>> To control your spam filter, log in at
>>>>>>> http://filter.kgbinternet.com
>>>>>>>
>>>>>>>
>>>>>>>   ------------------------------****--
>>>>>> Spam/Virus scanning by CanIt Pro
>>>>>>
>>>>>> For more information see
>>>>>> http://www.kgbinternet.com/****SpamFilter.htm<http://www.kgbinternet.com/**SpamFilter.htm>
>>>>>> <http://www.**kgbinternet.com/SpamFilter.htm<http://www.kgbinternet.com/SpamFilter.htm>
>>>>>> **>
>>>>>>
>>>>>> To control your spam filter, log in at
>>>>>> http://filter.kgbinternet.com
>>>>>>
>>>>>>
>>>>>>   ------------------------------**--
>>>> Spam/Virus scanning by CanIt Pro
>>>>
>>>> For more information see
>>>> http://www.kgbinternet.com/**SpamFilter.htm<http://www.kgbinternet.com/SpamFilter.htm>
>>>>
>>>> To control your spam filter, log in at
>>>> http://filter.kgbinternet.com
>>>>
>>>>
> --------------------------------
> Spam/Virus scanning by CanIt Pro
>
> For more information see
> http://www.kgbinternet.com/SpamFilter.htm
>
> To control your spam filter, log in at
> http://filter.kgbinternet.com
>


Mime
View raw message