踩到的 Mongodb key的坑

今天服務(wù)器重啟了坟冲,發(fā)現(xiàn)用戶數(shù)據(jù)不能存檔磨镶。查找后發(fā)現(xiàn)是由于用戶數(shù)據(jù)里存在了這種類型的 map:{"a.b.c": 1 } ,在存檔進(jìn)mongodb時健提,由于服務(wù)器進(jìn)行了一些處理琳猫,導(dǎo)致存檔失敗。
正常情況下這種類型的key 是可以存儲進(jìn)數(shù)據(jù)庫的私痹,但是會發(fā)生事與愿違的事情:

> db.test.findOne()
{ "_id" : ObjectId("528090797f6408479a607d61"), "hi" : "world" }
>
>
> db.test.insert({ "a.b.c": 1 }) 
2015-12-31T10:28:53.098+0800 E QUERY    Error: can't have . in field names [a.b.c]
    at Error (<anonymous>)
    at DBCollection._validateForStorage (src/mongo/shell/collection.js:157:19)
    at insert (src/mongo/shell/bulk_api.js:646:20)
    at DBCollection.insert (src/mongo/shell/collection.js:243:18)
    at (shell):1:9 at src/mongo/shell/collection.js:157
>
>
> db.test.update({"hi":"world" },{$set:{ "a.b.c" : 1 }})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.test.findOne()
{
        "_id" : ObjectId("528090797f6408479a607d61"),
        "hi" : "world",
        "a" : {
                "b" : {
                        "c" : 1
                }
        }
}
>
>

可以看到這里insert根本就出錯脐嫂,而update被解析錯了。
特意查了下MongoDB的文檔紊遵,發(fā)現(xiàn)在MongoDB的key中不能使用的字符包括:

Windows下:/ . " $ * < > : | ?
Linux下:  / . " $

MongoDB文檔

For MongoDB deployments running on Windows, MongoDB will not permit database names that include any of the following characters:
/. "$*<>:|?
Also, database names cannot contain the null character.
Restrictions on Database Names for Unix and Linux Systems
For MongoDB deployments running on Unix and Linux systems, MongoDB will not permit database names that include any of the following characters:
/. "$
Also, database names cannot contain the null character.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末账千,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子癞蚕,更是在濱河造成了極大的恐慌蕊爵,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桦山,死亡現(xiàn)場離奇詭異攒射,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)恒水,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門会放,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钉凌,你說我怎么就攤上這事咧最。” “怎么了御雕?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵矢沿,是天一觀的道長。 經(jīng)常有香客問我酸纲,道長捣鲸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任闽坡,我火速辦了婚禮栽惶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘疾嗅。我一直安慰自己外厂,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布代承。 她就那樣靜靜地躺著汁蝶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪论悴。 梳的紋絲不亂的頭發(fā)上穿仪,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天席爽,我揣著相機(jī)與錄音,去河邊找鬼啊片。 笑死,一個胖子當(dāng)著我的面吹牛玖像,可吹牛的內(nèi)容都是我干的紫谷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼捐寥,長吁一口氣:“原來是場噩夢啊……” “哼笤昨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起握恳,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤瞒窒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后乡洼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體崇裁,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年束昵,在試婚紗的時候發(fā)現(xiàn)自己被綠了拔稳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡锹雏,死狀恐怖巴比,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情礁遵,我是刑警寧澤轻绞,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站佣耐,受9級特大地震影響政勃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晰赞,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一稼病、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧掖鱼,春花似錦然走、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至褐墅,卻和暖如春拆檬,著一層夾襖步出監(jiān)牢的瞬間洪己,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工竟贯, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留答捕,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓屑那,卻偏偏與公主長得像拱镐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子持际,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容

  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 9,475評論 0 23
  • PLEASE READ THE FOLLOWING APPLE DEVELOPER PROGRAM LICENSE...
    念念不忘的閱讀 13,470評論 5 6
  • NAME dnsmasq - A lightweight DHCP and caching DNS server....
    ximitc閱讀 2,844評論 0 0
  • 回宿舍發(fā)現(xiàn)側(cè)門被鎖了沃琅,改走正門,在小道上前面蜘欲,有一個阿姨推著自行車益眉,車上綁著些泡沫,泡沫從車上掉了下來姥份,阿姨停住車...
    陳耿坤閱讀 197評論 2 1
  • 一郭脂、覺察日記 【事實】兩天的學(xué)習(xí)過程,不斷的總結(jié)反思 【感覺】收獲滿滿殿衰,很豐盛 【意圖】不斷的學(xué)習(xí)朱庆、成長、提升闷祥,達(dá)...
    以詩為名閱讀 185評論 0 0