MongoDBの特殊なJSON
本編にも書いたが、MongoDBは比較的にドキュメントが揃っていると思うが、
という欠点はある。形式的定義はともかくも、事例はほんとに欲しい。
<t> is the hexadecimal representation of a single byte indicating the data type.
この説明から想像できることはやってみたがすべてエラー。動く例を一個でも書いておいてくれれば、まったく事情が違ったろうに。
今、わかった。"$type": "02" だった。0x付けないのね。そんなことで嵌るんだよ、例がないと!!
mongoimportでインポート可能な動作確認済みの例、最初から書いておいてくれればいいのに、例を!
{"oid": {"$oid": "52325e522ae3c43f4f5d21d4"} }
{"date": {"$date": 1379036064000} }
{"ref":{"$ref": "a", "$id": {"$oid": "52325e522ae3c43f4f5d21d4"}} }
{"bin": {"$binary": "R0lGODlhAQABAIAAAP///////yH5BAEHAAEALAAAAAABAAEAAAICTAEAOw==", "$type": "02"} }
{"tm": {"$timestamp":{"t": 1379036064, "i": 123}} }
{"undefined": {"$undefined": true} }
バイナリーの$typeには"00"を入れておくのが無難なようだ。この$typeはBSON仕様から来ている。
timestamp は Tools for representing MongoDB internal Timestamps だそうで、If you need to store a regular timestamp, please use a datetime. だと。つまり、通常のタイムスタンプは、$date にエンコードするほうがいいわけだ。undefinedもどうもよくワカラン。shellでは、undefinedはnullに変換される。