mongoose 시리즈 중 하나 find 조회
Model.find(filter[, projection][, options][, callback])
인자 1:filter
조회 조건 은 JSON 문서 의 형식 을 사용 하고 JSON 문서 의 문법 은 MongoDB shell 과 일치 합 니 다.
{ field1: value1, field2: { operator: value2 } ... }
1.모두 찾기
Model.find()
Model.find({})
2.정확 한 찾기
Model.find({author:'dora'})
3.조작 부호 사용 하기
대비 연산 자
기호.
묘사 하 다.
$eq
지정 한 값 과 같 습 니 다.
$ne
지정 한 값 과 같 지 않 습 니 다.
$gt
지정 한 값 보다 크다
$gte
지정 한 값 보다 크다
$lt
지정 한 값 보다 작 음
$lte
지정 한 값 보다 작 음
$in
검색 배열 에서 지정 한 값 중 하나 와 일치 합 니 다.
$nin
검색 배열 에서 지정 한 값 중 어느 것 과도 일치 하지 않 습 니 다.
Model.find({ age: { $in: [16, 18]} })
age
필드 는 16
또는 18
의 모든 document 을 되 돌려 줍 니 다.논리 관련 조작 부호
기호.
묘사 하 다.
$and
배열 에서 지정 한 모든 조건 을 만족 시 킵 니 다.
$nor
배열 에서 지정 한 모든 조건 을 만족 시 키 지 못 합 니 다.
$or
배열 에서 지정 한 조건 중 하 나 를 만족 시 킵 니 다.
$not
반전 조회,지정 한 조건 에 만족 하지 않 는 문 서 를 되 돌려 줍 니 다.
//
{$and:[ {expression1},{expression2}, ... ,{expressionN} ]}
{$nor:[ {expression1},{expression2}, ... ,{expressionN} ]}
{$or:[ {expression1},{expression2}, ... ,{expressionN} ]}
{field: { $not: { }}}
논리 연산 자의 비 교 는 필드 가 존재 하지 않 는 상황 을 포함한다.
Model.find( { age: { $not: { $lte: 16 }}})
// age 16 age
필드 관련 연산 자
기호.
묘사 하 다.
$exists
지정 한 필드 가 존재 하 는 문서
{ field: { $exists: } }
과 일치 합 니 다.$type
지정 한 형식의 문서
{field: { $type: }}
을 되 돌려 줍 니 다.4.포 함 된 대상 필드 찾기
데 이 터 는 아래 와 같다.
{
name: { first: "dora", last: "wang" }
}
정확 한 일치,순서,필드 가 일치 해 야 합 니 다.
Model.find({ name: { last: "wang", first: "dora" } })
// []
점 문법 을 사용 하면 포 함 된 필드 와 일치 할 수 있 습 니 다.필드 이름 은 따옴표 로 불 러 와 야 합 니 다.
Model.find({ 'name.last': 'wang' })
5.배열 필드 찾기
기호.
묘사 하 다.
$all
검색 배열 에서 지정 한 모든 조건 을 포함 하 는 배열 필드 와 일치 합 니 다.
$elemMatch
일치 하 는 배열 필드 의 한 값 은
$elemMatch
에서 지정 한 모든 조건 을 만족 시 킵 니 다.$size
배열 필드 와 일치 하 는 length 는 지정 한 크기 와 같은 document 입 니 다.
데 이 터 는 아래 와 같다.
{ year: [ 2018, 2019 ] }
{ year: [ 2017, 2019, 2020 ] }
{ year: [ 2016, 2020 ] }
배열 의 최소 값 찾기
정확 한 검색 쓰기 사용 가능
{field: value}
Model.find({ year: 2019 });
// { "_id" : ..., "year" : [ 2018, 2019 ] }
// { "_id" : ..., "year" : [ 2017, 2019, 2020 ] }
배열 의 여러 값 찾기
$all
을 사용 하여 2019
과 2020
이 동시에 존재 하 는 document
을 찾 습 니 다.Model.find({ year: { $all: [ 2019, 2020 ] } });
// { "_id" : ..., "year" : [ 2017, 2019, 2020 ] }
조작 부호 조합 조회
조작 부 호 를 사용 하여 선별 할 수 있 습 니 다.
{:{operator: value}}
,예 를 들 어 $in
.Model.find({ year: { $in: [ 2018, 2020 ] } });
// { "_id" : ..., "year" : [ 2018, 2019 ] }
// { "_id" : ..., "year" : [ 2017, 2019, 2020 ] }
조작 부호 조합 조회
{:{operator1: value1, operator2: value2}}
Model.find({ year: { $gt: 2019, $lt: 2018 } });
// { "_id" : ..., "year" : [ 2017, 2019, 2020 ] }
// { "_id" : ..., "year" : [ 2016, 2020 ] }
배열 필드 는 조회 조건 을 만족 시 키 는 요 소 를 포함 하고 서로 다른 요소 가 각각 조건 을 만족 시 킬 수도 있 고 같은 요소 가 모든 조건 을 만족 시 킬 수도 있다.예 를 들 어 상기 한 값 은 2019 보다 큰 조건 을 만족 시 키 고 다른 값 은 2018 보다 작은 조건 을 만족 시 킬 수 있다.
$elemMatch 단일 필드 값 은 모든 검색 조건 을 만족 시 킵 니 다.
$elemMatch
배열 필드 의 값 을 찾 는 동시에 모든 조건 을 만족 시 키 는 document
.{field: { $elemMatch: { , , ... }}}
Model.find({ year: { $elemMatch: { $gt: 2016, $lt: 2018 } } })
// { "_id" : ..., "year" : [ 2017, 2019, 2020 ] }
배열 아래 표시 조회
Model.find({ 'year.1': { $gt: 2019 } })
// { "_id" : ..., "year" : [ 2016, 2020 ] }
수조
year
의 두 번 째 값 은 2019
보다 크다.6.배열 대상 찾기
데 이 터 는 아래 와 같다.
{author: [{name: "dora", age: 18 },{name: "wang", age: 16 }]}
정확 한 조회
정확 한 일치,순서,필드 가 일치 해 야 합 니 다.
Model.find({ author: { name: "dora", age: 18 } })
점 문법 조회
Model.find({ 'author.age': { $gte: 18 } })
$elemMatch 는 모든 검색 조건 을 동시에 만족 시 킵 니 다.
Model.find({ "author": {$elemMatch: {name: 'dora', age:{ $lt: 18 }}})
// []
인자 2:projection
어떤
document
필드 를 포함 하거나 제외 할 지 지정 합 니 다.mongoose 에 서 는 문자열 지정 과 대상 형식 지정 두 가지 지정 방식 이 있 습 니 다.
문자열 이 지정 되 었 을 때 제 외 된 필드 앞 에
_id
번 을 추가 하고 세그먼트 이름 만 포함 합 니 다.Model.find({},'age');
Model.find({},'-name');
대상 형식 지정 시
-
은 포함 되 고 1
은 제외 된다.Model.find({}, { age: 1 });
Model.find({}, { name: 0 });
select()방법 으로 정의 하기
Model.find().select('name age');
Model.find().select({ name: 0 });
매개 변수 3:options
//
Model.find(filter,null,options)
Model.find(filter).setOptions(options)
Model.find(filter).
0
옵션 은 공식 문서 options 을 보십시오.Query.prototype.setOptions()
:정렬 규칙 에 따라 주어진 필드 에 따라 순 서 를 매 길 수 있 습 니 다.수 치 는 sort
,asc
,desc
,ascending
,descending
과 1
입 니 다.-1
:반환 결 과 를 지정 하 는 최대 수량 limit
:건 너 뛸 문서 의 수량 을 지정 합 니 다 lean
이 아 닌 일반 js 대상 으로 돌아 갑 니 다.mongoose 의 특별한 처리 없 이 전단 으로 돌아 가 는 데 이 터 는 일반 js 대상 으로 바 꾸 는 것 이 좋 습 니 다.// sort
Model.find().sort('age -name'); // - descending
Model.find().sort({age:'asc', name:-1});
Mongoose Documents
과 sort
을 동시에 사용 할 때 호출 순서 가 중요 하지 않 고 돌아 오 는 데 이 터 는 모두 정렬 한 후에 수량 을 제한 합 니 다.//
Model.find().limit(2).sort('age');
Model.find().sort('age').limit(2);
인자 4:callback
전래
Mongoose 에 들 어 오 는 모든 조회 의 형식 은
limit
입 니 다.오류 가 발생 하면 callback
은 오류 정보 이 고 callback(error, result)
은 error
이다.조회 에 성공 하면 result
은 null
이 고 error
은 조회 결과 이 며 조회 결과 의 구조 형 태 는 조회 방법 에 따라 서로 다른 형식 이 있다.null
방법의 조회 결 과 는 배열 로 내용 을 조회 하지 못 하 더 라 도 result
빈 배열 로 돌아간다.전하 지 않다
find()
에 들 어가 지 않 을 때 조회 방법 은 []
인 스 턴 스 를 되 돌려 주 고 인 스 턴 스 는 콜백 원형 의 모든 방법 을 계승 하기 때문에 돌아 오 는 인 스 턴 스 는 다른 방법 을 체인 으로 호출 하여 조회 체인 을 구성 할 수 있다.let query = Model.find({ name: 'Dora' });
query.select('name age -_id');
조회 방법 이 반전 함수 에 들 어가 지 않 을 때 조회 데 이 터 를 얻 는 방식 은 두 가지 가 있 습 니 다.
1. exec()
Query
인 스 턴 스 의 Query
방법 으로 조 회 를 실시 합 니 다.즉,체인 문법 의 마지막 에 query
에 들 어가 조회 데 이 터 를 얻 는 것 입 니 다.//
Model.find(
{ name: /Dora/, age: { $gte: 16, $lt: 18 } },
'name age -_id',
{ limit: 2, sort: 'age' },
(err,res)=>{
if (err) return handleError(err);
console.log(res);
}
});
let query = Model.
find({ name: /Dora/ }).
where('age').gte(16).lt(18).
select('name age -_id').
limit(2).sort('age');
query.exec((err, res)=> {
if (err) return handleError(err);
console.log(res);
});
2. then()
exec()
인 스 턴 스 의 callback
방법 으로 조회 체인 을 query
으로 처리 합 니 다.query.then(
(res) => {console.log(res)},
(err) => {console.log(err)}
);
then()
을 사용 하여 조회 결 과 를 얻 습 니 다.let res = await query;
console.log(res);
findOne()
promise
conditions
조회 조건 이
async / await
이면 Model.findOne(conditions[, projection][, options][, callback])
을 사용 하 는 것 을 권장 합 니 다.options 옵션 이 제한 되 어 있 습 니 다.
모든
_id
을 사용 할 수 있 는 것 이 아니 기 때문에 체인 이 findById()
원형 상의 방법 을 호출 할 때 도 사용 가능 한 방법 만 사용 할 수 있다.options 참조.result 조회 결과
Query
대상 형식 입 니 다.Query.prototype.setOptions()
은 {}
,conditions
또는 {}
으로 데 이 터 를 임의로 되 돌려 줍 니 다.null
은 undefined
으로 되 돌아 갑 니 다.findById()
result
id
null
은 Model.findById(id[, projection][, options][, callback])
에 해당 한다.?? 정부 에서 발췌 하 다
다른 점 은 처리 에 있다
Model.findById(id)
Model.findOne({ _id: id })
시의 상황.id
undefined
,임의의 데 이 터 를 되 돌려 줍 니 다.그리고findOne({ _id: undefined })
findOne({})
,귀환findById(undefined)
。 테스트 결 과 는
findOne({ _id: null })
으로 여전히 null
으로 돌 아 왔 다.따라서 mongoose 버 전의 문제 일 수도 있 지만 데이터 가 정상 으로 돌아 오 더 라 도 findOne({ _id: undefined })
조 회 는 null
을 사용 하 는 것 을 권장 합 니 다.result 조회 결과
_id
대상 형식 입 니 다.findById()
은 {}
또는 id
이 고 undefined
은 null
으로 돌아 갑 니 다.result
으로 되 돌려 줍 니 다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
몽구스 모델만으로 GraphQL 서버 만들기소개 Mongoose는 MongoDB 및 Node.js용 ODM(개체 데이터 모델링) 라이브러리이며 NodeJ 개발자에게 가장 친숙한 라이브러리 중 하나입니다. Mongoose는 REST 응용 프로그램에 널리 사용되...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.