반응형
Mongoose, 찾기, 특정 속성 반환
나는 다음과 같은 전화를 받았습니다.
exports.getBIMFromProject = function(req, res){
mongoose.model('bim').find({projectId: req.params['prj_id']}, function(err, bim){
if(err){
console.error(err);
res.send(500)
}
res.send(200, bim);
});
};
반환할 속성을 지정하는 위치는 어디입니까?문서에서 찾을 수 없습니다.위의 명령은 전체 개체를 반환합니다.저는 단지 몇 개의 부동산만 반환하기를 원합니다.
내 스키마는 다음과 같습니다.
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var bimSchema = new Schema({
projectId: Number,
user: String,
items:[
{
bimObjectId: Number,
typeId: String,
position:{
floor: String,
room:{
name: String,
number: String
}
}
}
]
});
mongoose.model('bim', bimSchema);
저는 제 휴식 시간에 항목 배열이 포함되는 것을 원하지 않습니다.
투영법을 사용합니다.mongoose 쿼리 문서의 첫 번째 예에는 투영 작업이 포함되어 있습니다.
NB: 실제 코드 b/c가 아닙니다. 트리플 스타로 중요한 비트를 강조했습니다.
// find each person with a last name matching 'Ghost', ***selecting the `name` and `occupation` fields***
Person.findOne({ 'name.last': 'Ghost' }, ***'name occupation'***, function (err, person) {
if (err) return handleError(err);
console.log('%s %s is a %s.', person.name.first, person.name.last, person.occupation) // Space Ghost is a talk show host.
})
그Person
스키마가 지정되지 않았지만 예제가 충분히 명확하다고 생각합니다.
Mongoose는 , 및 를 사용하여 문서를 투영하는 여러 가지 방법을 제공합니다.
문자열로 투영:
// INCLUDE SPECIFIC FIELDS
// find user and return only name and phone fields
User.findOne({ email: email }, 'name phone');
// EXCLUDE SPECIFIC FIELD
// find user and return all fields except password
User.findOne({ email: email }, '-password');
통과에 의한 투영projection
속성:
// find user and return just _id field
User.findOne({ email: email }, {
projection: { _id: 1 }
});
사용 방법:
// find user and return just _id and name field
User.findOne({ email: email }).select('name');
// find user and return all fields except _id
User.findOne({ email: email }).select({ _id: 0 });
및 방법으로도 동일한 작업을 수행할 수 있습니다.
MyModel.find({name: "john"}, 'name age address', function(err, docs) {
console.log(docs);
});
필드를 반환합니다.name
,age
그리고.address
오직.
의 도움으로.select()
이것은 가능합니다.
- 필요한 필드 수가 총 필드 수보다 적을 경우,
.select('projectId user')
사용할 수 있습니다. - 그렇지 않으면 무시할 필드의 수가 전체 필드에서 더 적습니다.
.select('-items')
사용할 수 있습니다.
따라서 필드를 가져오는 경우 공백으로 구분된 필드 문자열을 전달하고 필드를 무시하는 경우에는 "-"로 구분된 문자열을 사용하기 전에 공백으로 구분된 필드를 전달할 수 있습니다.
특정 속성 찾기는 일부 속성도 피합니다.
await User.find({ email: email }, { name: 1, phone: 1, status: 1, password: 0 });
.Select()
쿼리 결과에서 반환할 필드를 선택하는 데 사용되는 메서드
let result = await MyModel.find({ user : "user" }).select('name lastname status')
언급URL : https://stackoverflow.com/questions/25330555/mongoose-find-return-specific-properties
반응형
'programing' 카테고리의 다른 글
linq 식으로 중첩된 객체를 평탄화하는 방법 (0) | 2023.05.21 |
---|---|
spacy Windows 10 및 Python 3.5.3에서 'en_core_web_sm' 모델을 찾을 수 없음 :: 아나콘다 사용자 지정(64비트) (0) | 2023.05.21 |
DBef를 사용하여 mongodb를 쿼리하는 방법 (0) | 2023.05.21 |
목표-C에서 메서드 오버로드? (0) | 2023.05.21 |
Cygwin에 Pip-3.2 설치 (0) | 2023.05.21 |