目前已經找到一種方法,但是該方法有問題,即無法有效處理文件過長的情況。
db.area.insert({'number':'010010','province':'內蒙古自治區','city':'呼和浩特市','disc':'新城區','addr ':'光華街(十四中家屬大樓)','jd':'內蒙古自治區呼和浩特市新城區'})
db.area.insert({'number':'010010','province':'內蒙古自治區','city':'呼和浩特市','disc':'新城區','addr':'興安南路' ,'jd':'內蒙古自治區呼和浩特市新城區'})
cat mon | /usr/local/mongodb/bin/mongo localhost/zip --shell
當insert的文件太長時,該方法會報錯,顯示unexpected token ILLEGAL和unexpected identifier。但是在Robomongo中執行同樣的指令則沒有問題。
因為需要批次處理的是insert和update混合的指令,且涉及多個集合,因此無法使用mongoimport。
使用環境為linux
直接將所有要執行的程式碼寫成一個
all.js
文件,然后用mongo localhost/zip all.js
執行。@Huan Du 的答案是在用 MongoDB Shell 的腳本模式,需要注意的是這跟在Shell裡直接輸入指令有一些小區別,例如 show dbs 是不能用的,因為它不是合法的 Javascript 語言。再例如查詢回傳的是Cursor,而不是直接顯示前20個文檔。錯誤提示會有的,例如說語法錯誤。
具體的文檔請看這裡
MongoDB Scripting
Write Scripts for the mongo Shell
Server-side JavaScript