incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Damien Katz <dam...@apache.org>
Subject Re: newbie question #1
Date Sun, 28 Dec 2008 14:36:25 GMT

On Dec 28, 2008, at 8:58 AM, Geir Magnusson Jr. wrote:

>
> On Dec 28, 2008, at 8:46 AM, Paul Davis wrote:
>
>> On Sun, Dec 28, 2008 at 8:32 AM, Geir Magnusson Jr.  
>> <geir@pobox.com> wrote:
>>>
>>> On Dec 28, 2008, at 8:19 AM, Noah Slater wrote:
>>>
>>>> On Sun, Dec 28, 2008 at 08:12:10AM -0500, Geir Magnusson Jr. wrote:
>>>>>
>>>>> I've had this debate internally at 10gen too, and I'm not  
>>>>> interested in
>>>>> picking a fight here :) I think that by reserving fields like  
>>>>> this, you
>>>>> can't
>>>>> claim to be storing JSON anymore, but "JSON--" or "almost JSON".
>>>>
>>>> I think this is bogus. I've started calling these JSON profiles  
>>>> and they
>>>> are
>>>> just as much JSON as an XML vocabulary is a type of XML.
>>>
>>> <sigh> :)
>>>
>>> I didn't want to start this argument.
>>>
>>> My point is that an arbitrary, legal JSON document can have "_id"  
>>> and "_rev"
>>> as fields, but you couldn't store that in CouchDB (or MongoDB, for  
>>> that
>>> matter), since CouchDB would want to use those reserved field  
>>> names for
>>> itself.
>>>
>>
>> To say that reserving underscore prefixed fields for CouchDB use is a
>> violation of rfc4627 [1] is provably false.
>
> That's not what I said.  The documents that CouchDB produces for  
> storage are legal JSON.
>
> What I said was that you couldn't store an arbitrary, legal JSON  
> document from a user with fidelity in CouchDB.
>
> The following two documents are legal JSON documents, but CouchDB  
> can't store them (if I grok CouchDB right) :
>
> {
>  "_id" : "geir's document",
>  "foo" : "bar"
> }
>
> {
>  "_id" : "geir's document",
>  "foo" : "woogie"
> }

Sure you can:

{_id:"the actual id",
body:{
   "_id" : "geir's document",
   "foo" : "bar"
   }
}


If you need to store underscore fields, store move the whole document  
down from the top level into another field.

This doesn't just apply to _id and _rev, there are other meta fields  
that can be returned in a doc, and those will also have underscores.  
The rule is reserved fields in document root start with underscore.  
User fields at the doc root level cannot start with underscore.



Mime
View raw message