This sounds like a good idea but I am not sure how to implement it. Ideas?

On Nov 5, 2012, at 4:31 PM, Jens Alfke <[email protected]> wrote:

> 
> On Nov 5, 2012, at 12:17 PM, Kevin Burton <[email protected]> wrote:
> 
>> When I create a new document both the id and rev will be null. So in order 
>> to determine if the create is a duplicate another field must be involved.
> 
> Gotcha. In general, if you have an attribute of a document that must be 
> unique within the database, it’s a good idea to use that attribute (or a 
> transformed/canonicalized version of it) as the document ID. That way the 
> database itself can enforce the uniqueness. Otherwise you can end up in 
> situations where there are multiple documents with that same attribute value, 
> if your app supports multiple clients or does replication.
> 
>> For example say my document had a field 'title' I could construct a view to 
>> return all documents that have a given 'title'. The reason that I brought 
>> this up in this context is that if I could check to see if there were any 
>> documents that had a particular title then I would be closer to finding out 
>> if the document had already been inserted in the db.
> 
> That’s very easy to do. In generic CouchDB terms (I don’t know DreamSeat or 
> .NET), you would
> * Create a design document containing a view with a map function:
>    function(doc) {if (doc.title) emit(doc.title, null);}
> * Query the view for a particular title by setting the startkey and endkey 
> parameters to the title. You’ll get back a list of the document(s), if any, 
> with that title.
> * If you get back zero rows from the query, create a new document.
> 
> —Jens

Reply via email to