使用node.js查询mongoDB的特定字段

时间:2015-02-23 08:49:51

标签: node.js mongodb mongoose

在下面的代码中,查询为我提供了所有字段。我只想查询_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);
  });
};

4 个答案:

答案 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