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

**wrote:

   Exactly like that yeah.

On Mon, Jul 15, 2013 at 8:55 PM, Stephan Bardubitzki <
[email protected]> 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 <
[email protected]> 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


Reply via email to