2012-12-05 24 views
3

找不到簡單的問題的解決方案:蒙戈--shell file.js和 「使用」 的語句

我有文件text.js

use somedb 
db.somecollection.findOne() 

當我運行在cmd中這個文件從文件重定向命令: 「蒙戈< text.js」

正常工作

但是當我嘗試這樣

「蒙戈text.js」 或 「蒙戈--shell test.js」

我得到這個錯誤消息

MongoDB的外殼版本:2.2.0 連接到:測試 鍵入「幫助」尋求幫助 Wed Dec 05 16:05:21 SyntaxError:missing;之前聲明pathToFile \ test.js.js:1 未能加載:pathToFile \ test.js.js

它失敗的 「使用somedb」。如果我刪除這一行,它運行時沒有錯誤,但控制檯很清晰。

有什麼想法,這是什麼和如何解決?

我綁找到這個sollution,創造崇高文本2 默認構建文件構建工具是

{ 
"cmd": ["mongo","$file"] 
} 

但在這種情況下,我得到上述

PS錯誤。張貼這個問題之後,我覺得對於SublimeText2 sollution:

{ 
"selector": "source.js", 
"shell":true, 
"cmd": ["mongo < ${file}"] 
} 

PSS。張貼這個問題之後,我覺得對於SublimeText3 sollution:

{ 
"selector": "source.js", 
"shell":true, 
"cmd": ["mongo","<", "$file"] 
} 

這個構建工具正常工作

+0

我正在爲此尋找sollution來創建Sublime Text 2的構建工具。 – VitVad

回答

2

同時啓動蒙戈客戶可以指定數據庫:

mongo somedb text.js 

要獲得從客戶端輸出到標準輸出只需在腳本中使用printjson函數:

printjson(db.somecollection.findOne()); 
+0

這個想法是在js文件中指定db。之前我看到了mongo shell的初始化。至於「printjson」thx,但也存在一些問題。當我們運行「printjson(db.somecollection.findOne());」我們得到結果。當我們嘗試運行「printjson(db.somecollection.find());」時,似乎打印整個遊標對象,但不是結果。沒有printjson就沒有任何回報。 – VitVad

+0

您可以在腳本中的while循環中迭代結果,併爲每個單獨的對象調用printjson:while(cursor.hasNext())printjson(cursor.next()); –

+0

這個選項不起作用 –

7

use dbname是交互式shell中的輔助函數,當你像使用JS腳本文件一樣使用mongo shell時,它不起作用。

有多種解決方案。最好的一個,IMO是明確地傳遞數據庫名稱與主機和端口名一起蒙戈是這樣的:

mongo hostname:27017/dbname mongoscript.js //你的端口號

更換27017一種更好的方式來做到這一點會被定義DB在腳本的開頭:

mydb=db.getSiblingDB("yourdbname"); 
mydb.collection.findOne(); 
etc. 

後者爲首選,因爲它允許你需要做的,所以你用在同一個腳本的多個數據塊進行交互。

+0

對於mongo shell幫助程序命令和它們的JS等價物之間的完全映射,可以在您的js腳本文件中使用,請參閱mongo文檔:http://docs.mongodb.org /手動/教程/寫腳本換的-蒙戈 - 殼/ –

-1

蒙戈需要從一個shell調用來獲取模式,與Ansible你有這樣的:

- name: mongo using different databases 
    action: shell /usr/bin/mongo < text.js 

取而代之的是:

- name: mongo breaking 
    command: /usr/bin/mongo < text.js 
0

這是最終爲我工作的Windows + Sublime Text 2 + MongoDB 2.6.5

{ 
    "selector": "source.js", 
    "shell":true, 
    "cmd": ["mongo","<", "$file"], 
    "working_dir" : "C:\\MongoDB\\bin" 
}