Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MongoDB Insert key with '$' (dollar)

I am trying to insert a collection with a json object containing a key which starts with '$' (for instance: '$count'). I read the mongodb v3.0 FAQ's and they have mentioned it is not such a key. Is there any roundabout way insert such a key and retrieve it back?

like image 911
AbiSivam Avatar asked Nov 11 '16 06:11

AbiSivam


1 Answers

Field names cannot contain dots (i.e. .) or null characters, and they must not start with a dollar sign (i.e. $).


In some cases, you may wish to build a BSON object with a user-provided key. In these situations, keys will need to substitute the reserved $ and . characters. Any character is sufficient, but consider using the Unicode full width equivalents: U+FF04 (i.e. “$”) and U+FF0E (i.e. “.”).

Is not recomanded but you can try this:

dollar = "\uFF04";
$
dot = "\uFF0E"
.

db.test.save({[dollar]:dot})
WriteResult({ "nInserted" : 1 })
db.test.save({[dot]:dollar})
WriteResult({ "nInserted" : 1 })

db.test.find()
{ "_id" : ObjectId("58256b0f9934a5d1c696c456"), "$" : "." }
{ "_id" : ObjectId("58256d359934a5d1c696c457"), "." : "$" }
like image 194
sergiuz Avatar answered Nov 15 '22 05:11

sergiuz