mongoose,select一个特定的领域与查找
我试图只select一个特定的领域
exports.someValue = function(req, res, next) { //query with mongoose var query = dbSchemas.SomeValue.find({}).select('name'); query.exec(function (err, someValue) { if (err) return next(err); res.send(someValue); }); }; 但在我的JSON响应我也收到_id,我的文档架构只有两个字,_id和名称
 [{"_id":70672,"name":"SOME VALUE 1"},{"_id":71327,"name":"SOME VALUE 2"}] 
为什么???
  _id字段总是存在,除非您明确排除它。 这样做使用-语法: 
 exports.someValue = function(req, res, next) { //query with mongoose var query = dbSchemas.SomeValue.find({}).select('name -_id'); query.exec(function (err, someValue) { if (err) return next(err); res.send(someValue); }); }; 
或者明确地通过一个对象:
 exports.someValue = function(req, res, next) { //query with mongoose var query = dbSchemas.SomeValue.find({}).select({ "name": 1, "_id": 0}); query.exec(function (err, someValue) { if (err) return next(err); res.send(someValue); }); }; 
现在有一个更简单的方法:
 exports.someValue = function(req, res, next) { //query with mongoose dbSchemas.SomeValue.find({}, 'name', function(err, someValue){ if(err) return next(err); res.send(someValue); }); //this eliminates the .select() and .exec() methods }; 
 如果您希望大部分Schema fields并且只想省略几个字段,则可以在字段name加上- 。 对于第二个参数中的"-name" ,文档中不会包含name字段,而此处给出的示例仅在返回的文档中包含name字段。 
在Mongoose中使用Native MongoDB代码有更好的方法来处理它。
 exports.getUsers = function(req, res, next) { var usersProjection = { __v: false, _id: false }; User.find({}, usersProjection, function (err, users) { if (err) return next(err); res.json(users); }); 
}
http://docs.mongodb.org/manual/reference/method/db.collection.find/
注意:
var usersProjection
此处列出的对象列表将不会被退回/打印。
 db.someschema.find( { }, { name: 1 } ).exec(function(err,Result){ var NameArray = Result; console.log(NameArray); }) 
输出:
 [ {"name":"peter"}, {"name":"john"}, {"name":"joseph"} ]