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"} ]