在下面的代码中,查询为我提供了所有字段。我只想查询_id和serialno。怎么去吧。
模式
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);
});
};
答案 0 :(得分:3)
要查询并仅返回特定字段,这是正确的请求:
Data.find({}, { _id : 1, serialno : 1 }, function (err, data) {
if(err) { return handleError(res, err); }
return res.json(200, data);
});
第二个对象参数是投影参数,在此对象中,您可以设置要返回或隐藏的字段。
此处有更多信息:http://docs.mongodb.org/manual/reference/method/db.collection.find/
答案 1 :(得分:3)
如果您使用的是最新的nodejs mongodb驱动程序3.0或更高版本,请尝试以下代码:
Data.find({}).project({ _id : 1, serialno : 1 }).toArray()
答案 2 :(得分: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);
});
答案 3 :(得分:1)
在MongoDB Node.js驱动程序v3.1及更高版本中:
Collection.find({}, {
projection: {
_id: false,
someField: true
}
});
find / findOne函数的第二个参数是options
。它支持限制,排序,投影以及更多过滤器。
来源:http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#findOne