2015-04-22 26 views
0

我寫了一個非常簡單的腳本來打印工作腳本的某些狀態的計數。不過,我無法打印我用find()查詢和投影的錯誤消息。這是腳本:在MongoDB腳本中打印find()的結果

conn = new Mongo(); 
db = conn.getDB("AABackend"); 
... 
print("Error messages:"); 
print(db.jobs.find({"state":"failed"}, {error_message:1})); 

這是最後一行不起作用。我希望是這樣的:

{ "_id" : ObjectId("55377e5293671115faf44b15"), "error_message" : "foobar" } 

,但我得到

DBQuery: AABackend.jobs -> { "state" : "failed" } 

我找不到任何關於這一點,但只是一個提示將真正幫助MongoDB的文檔中的一些東西。

+0

您可能需要使用**'findOne()'**方法,而不是**'找到()'**,因爲後者只返回一個遊標而不是實際的文檔。 – chridam

+0

您正在打印遊標的內容而不是查詢的結果(請參見:[將mongodb shell輸出打印到文件](http://stackoverflow.com/questions/13104800/printing-mongodb-shell-output-to -文件))。 – Stennie

+0

感謝您的鏈接,這確實是重複的。我沒有意識到這個答案符合我的用例,因爲我完全不熟悉這個數據庫,特別是MongoDB的東西:) –

回答

0

我不確定這是哪個驅動程序,但在Node.js中,它將返回光標對象,我認爲這就是你打印出來的。您正在打印遊標對象而不是結果。這也可能是爲什麼它打印的DBQuery:.......

在Node.js的,我會做這樣的事情:

db.jobs.find({"state":"failed"}).toArray(function(err, docs) { 
    console.log(docs); 
}; 

基本上試圖找到如何從遊標對象中得到的結果你的語言的驅動程序 - >相當於指定者()

希望這有助於