2014-06-22 2 views
48

내가몽구스가 발견

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); 
    }); 
}; 

와 그러나 나는 또한 _id를 받고있어 내 JSON 응답 만 특정 분야를 선택하기 위해 노력하고있어 함께 특정 분야를 선택, 내 문서 스키마가 두 fiels을 가지고, _id 및 이름

[{"_id":70672,"name":"SOME VALUE 1"},{"_id":71327,"name":"SOME VALUE 2"}] 

왜?

답변

87

_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 
    dbSchemas.SomeValue.find({}, 'name', function(err, someValue){ 
     if(err) return next(err); 
     res.send(someValue); 
    }); 
    //this eliminates the .select() and .exec() methods 
}; 

당신이 가장 원하는 :

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); 
    }); 
}; 
+0

무슨 일이 - 당신은 내가 여러 필드를 필터링 할 사람들을 위해 정보 – Remario

34

지금이 일의 짧은 방법이있다 그래서 - 구문을 사용하여 수행 Schema fields 일부만 생략하려는 경우 name 필드의 접두사를 -으로 지정할 수 있습니다. 여기에 주어진 예는 반환 된 문서에서 name 필드가하는 반면 두 번째 인수의 예 "-name"를 들어 하지이 문서에서 name 필드를 포함합니다.

+6

을 찾을 수있는 곳, 이야기, 쉼표로 그냥 평범한 공간을 분리해서하지 않습니다' 위의 where 절을 사용하려는 사용자는 blogItemModel.find ({}, 'title intro_image intro_text publish_date', function (err, blog_items) {.. ' – Starwave

+1

** dbSchema.Somevalue.find ({userEmail :'test @ test .com '},'userEmail -_id ', function (err, someValue) ** – user2180794

8

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

인쇄/반환되지 않습니다 여기에 나열된 개체의 목록입니다.

3
db.someschema.find({ }, { "name": 1,"_id": 0 }).exec(function(err,Result){ 
    var NameArray = Result; 
    console.log(NameArray); 
}) 

출력 :

[ 
{"name":"peter"}, 
{"name":"john"}, 
{"name":"joseph"} 
] 
관련 문제