2015-02-23 156 views
0

在下面的代碼中,查詢爲我提供了所有字段。我只想查詢_id和serialno。如何去做。使用node.js查詢mongoDB的特定字段

架構

var DataSchema = new Schema({ 
    serialno: String, 
    info: String, 
    active: Boolean, 
    content: String 
}); 

查詢

// Get list of datas 
exports.index = function(req, res) { 
    Data.find(function (err, data) { 
    if(err) { return handleError(res, err); } 
    return res.json(200, data); 
    }); 
}; 

回答

2

要查詢並返回僅特定字段,這是正確的請求:

Data.find({}, { _id : 1, serialno : 1 }, function (err, data) { 
    if(err) { return handleError(res, err); } 
    return res.json(200, data); 
}); 

第二個目的params爲投影參數,可以在這個對象中,你可以設置字段返回或隱藏。

更多的信息在這裏:http://docs.mongodb.org/manual/reference/method/db.collection.find/

+0

解決了我的問題。將標記作爲正確的答案。 – 2015-02-23 09:02:52

1

documentation,您正在使用的功能collection.find(query[[[, fields], options], callback]);

所以你需要指定fields參數:

Data.find(null, { "_id": true, "serialno": true }, function (err, data) { 
    if(err) { return handleError(res, err); } 
    return res.json(200, data); 
    }); 
+0

是的,解決了我的查詢。謝謝 。 – 2015-02-23 11:19:33

1

如果您正在使用最新的NodeJS的MongoDB驅動3.0或以上版本請試試此碼:

Data.find({}).project({ _id : 1, serialno : 1 }).toArray()