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
