couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Markus Jelsma <mar...@buyways.nl>
Subject Re: view syntax for retrieving object without a field
Date Fri, 22 Jan 2010 19:13:44 GMT
Hi,


I have some documents, all with a `name` field and some with a country field 
defined. Using the map function below i can retrieve all documents that have 
no country field defined.

function (doc)
{
  var 

  if (doc.country == "undefined")
  {
    emit(doc.name, null);
  }
}

I do believe this could be very unusable in many situations, especially if you 
need to retrieve documents based on the absence of a lot of different fields. 

Let's provide you with a better alternative, you need only one view to handle 
all possible negations, you only need to specify on which negations you want 
to select, check it out!

function (doc)
{
  var fields = new Array("name", "country");

  for (idx in fields)
  {
    if (typeof eval("doc." + fields[idx]) == "undefined")
    {
      emit(fields[idx], null);
    }
  }
}

Now you can just query the view with your key and retrieve all documents 
without that field.

Hope this helps.


Cheers,

Mime
View raw message