2014-05-30 39 views
2

我正在使用nodejs來查詢mongodb並希望使用自定義字段名輸出json。在NodeJS中,如何使用不同的字段名輸出mongodb的結果?

例如,從原來的MongoDB JSON也許

{id:1, text:"abc"} 

想我將它輸出爲

{ObjectID:1, DisplayText:"abc"}; 

我理解的MongoDB有$項目運營商在它的總框架,但不知道如何在NodeJS中使用它們。我使用

MongoDB的包的NodeJS是

var mongo = require('mongodb'); 
    var monk = require('monk'); 
    var db = monk('server:port/mydb'); 

欣賞這個任何意見。

+0

也許這會讓你開始:http://stackoverflow.com/questions/16252208/how-to-use-regex-in-mongodb-aggregation-query-within-match –

+0

謝謝,約翰。你會知道使用哪個mongodb軟件包嗎?我用類似的實現並得到TypeError:對象#沒有方法'集合'。 – Lee

回答

9

如果你是因爲你看起來是那麼你就可以訪問底層節點本地驅動程序的集合類型使用和尚通過.col訪問您選擇的集合對象上:

var db = require('monk')('localhost/test') 
    , collection = db.get('example'); 

    collection.col.aggregate(
    [ 
     { "$project": { 
     "_id": 0, 
     "ObjectID": "$_id", 
     "DisplayText": "$text" 
     }} 
    ], 
    function(err,result) { 

     console.log(JSON.stringify(result, undefined, 4)); 

    } 
); 

注意方法,比如以這種方式檢索到的不作爲標準修士集合對象包裝在承諾對象中。但至少這會告訴你如何訪問和使用$project重新塑造你的文檔。

+0

謝謝,尼爾。這似乎工作雖然我得到一個不同的錯誤:「聚合結果超過最大文件大小(16MB)」,但我相信這應該是一個單獨的問題,我應該工作。 – Lee

+1

@ user3492125現在,它試圖將整個集合輸出到本質上是一個數組的地方,所以如果您向客戶端發送響應,您可能不希望整個集合。還有其他一些方法,但是現在可能最具體的是管道運算符[**'$ match' **](http://docs.mongodb.org/manual/reference/operator/aggregation/match/)以減少結果。至少你知道如何現在和僧侶一起使用聚合。如果你有他們,隨意發佈其他問題堆棧溢出。 –

+0

尼爾,你有一個敏銳的頭腦。這正是我之前錯過的。謝謝。 – Lee

相關問題