2015-09-17 48 views
0

在蒙戈,我可以運行,返回領域快遞(的NodeJS)不適用的投影機

db.IPs.find({},{_id:0,IntegrityID:1,Timestamp:1}) 

不過的一個子集下面,當我嘗試做快遞一樣,所有的字段被返回。就好像投影機被忽略了一樣。

router.get('/', function(req, res, next) { 
    var db = req.db; 
    var collection = db.get('IPs'); 
    collection.find({},{_id:0,IntegrityID:1,Timestamp:1},function(e,docs){ 
     res.json(docs); 
    }); 
}); 
+0

您使用的是什麼版本的(推測)MongoDB Native驅動程序?您可以使用「npm ls」命令進行檢查。 – Noel

+0

我在我的package.json文件中確實有〜2.0.33,這是我從在線教程中複製而來的。我認爲這可能是不兼容的,所以我已經刪除了該行並嘗試運行** npm install mongodb **,但是現在我得到一個錯誤,因爲我沒有安裝python。我會嘗試安裝Python –

+0

我已經安裝了Python,但是現在我收到了一個關於「無法加載Visual C++組件」的錯誤「VCBuild.exe」「在Windows 10中啓用了.NET 3.5(inc 2.0)功能,但是我假設它需要構建工具,所以我現在正在下載Visual Studio Express(8GB)。 –

回答

0

看起來你是基於不同的驅動程序比您正在使用使用語法。下面是從2.x的文檔的例子:

// Peform a simple find and return all the documents 
    collection.find({}, {skip:1, limit:1, fields:{b:1}}).toArray(function(err, docs) { 
     test.equal(null, err); 
     test.equal(1, docs.length); 
     test.equal(null, docs[0].a); 
     test.equal(2, docs[0].b); 

注意,第二find參數包括不僅僅是場更加突出。嘗試調整查詢以將投影包裝在fields對象中。

collection.find({},{fields:{_id:0,IntegrityID:1,Timestamp:1}},function(e,docs){ 
    res.json(docs); 
}); 

您可能還需要考慮使用toArray像例如文檔,而不是通過在回調,但是這僅僅是一個風格的建議。

節點collection.find的節點MongoDB Native 2.0文檔是here

節點MongoDB Native123對於collection.find的文檔是here

+1

謝謝。非常簡單,當你知道如何! –