몽구스 쿼리 시작하기
11832 단어 mongodbjavascript
Model.find()
에 대해 살펴보겠습니다. 이 기사가 저와 같은 일부 초보자에게 도움이 되고 쿼리 속도를 더 빠르게 높일 수 있기를 바랍니다. 편안히 앉아 읽고 즐기십시오!평등 검사
우리는 댄서를 위한 모델을 만들고 여기에 5명의 댄서를 추가했습니다.
const Dancer = mongoose.model("Dancer", mongoose.Schema({
name: String,
age: String,
style: String
}))
await Dancer.create([
{ name: 'Amy Baxter', age: 22, style: 'Ballroom' },
{ name: 'Billy Clinton', age: 30, style: 'Tap Dance' },
{ name: 'Sara Bibi Clinton', age: 45, style: 'Techno' },
{ name: 'Shakira', age: 45, style: 'Salsa' },
{ name: 'Belle Perez', age: 18, style: 'Salsa' },
]);
이제 스타일이
Salsa
인 모든 댄서를 찾으려면 찾기의 대괄호 사이에 필터를 지정해야 합니다. 그렇게 하려면 추가할 수 있습니다{ style: "Salsa" }
.const salsaDancers = await Dancer.find({ style: "Salsa" });
// MongoDB may return the result in order
// To sort them we would use the javascript map function like so
salsaDancers.map(dancer => dancer.name).sort() // [36, 45]
이 방법으로 모든 속성을 쿼리할 수 있습니다. 대신 이름이나 나이에 대해 각각
{ name: "Amy Baxter" }
또는 { age: "30" }
를 수행한다고 가정해 보겠습니다.비교
가장 많이 사용하게 될 comparison query operators은 아마도 $gt 및 $lt 연산자와 변형일 것입니다. 30세 미만의 모든 댄서를 찾고 싶다고 가정해 보겠습니다.
const dancers = await Dancer.find({ age : { $lt: 30 })
// -> ["Amy Baxter", "Belle Perez"]
이제 30세 이상의 모든 댄서를 찾으려면 "크거나 같음"을 의미하는
$gte
연산자를 사용할 수 있습니다.const dancers = await Dancer.find({ age : { $gte: 30 })
// -> ["Amy Baxter", "Sara Bibi", "Shakira"]
Note:
$lt, $gt, $lte 및 $gte 연산자는 문자열, 날짜 및 기타 유형에서도 작동합니다. 몽구스는 유니코드 순서를 사용하여 문자열을 비교합니다. 그래도 작동하지 않으면 데이터 정렬을 사용하여 구성할 수 있습니다.정규 표현식
이제 이름에 Clinton이 포함된 댄서를 쿼리하고 싶다고 가정해 보겠습니다. Mongoose에서는 두 가지 방법으로 이를 수행할 수 있습니다.
1 . 아래와 같이 정규 표현식으로 간단하게 쿼리할 수 있습니다.
const dancers = await Dancer.find({ name : /Clinton/ })
// -> ["Billy Clinton", "Sara Bibi Clinton"]
참고: 정규 표현식으로 작업할 때 문자열에 ""가 포함되어 있지 않음에 유의하십시오.
2 . 다른 옵션은
$regex
연산자를 사용하는 것입니다. 이를 통해 정규식을 문자열로 전달할 수 있으며 이는 HTTP 요청에서 쿼리를 받는 경우에 편리합니다.const dancers = await Dancer.find({ name : { $regex: 'Clinton'} })
// -> ["Billy Clinton", "Sara Bibi Clinton"]
$and 및 $or를 사용한 구성
일반적으로 여러 필터를 설정하면 MongoDB는 모든 필터 속성과 일치하는 문서를 찾습니다.
const dancers = await Dancer.find(
{ name : { $regex: 'Clinton'},
age : 30
}) // -> ["Billy Clinton"]
이름에 클린턴이 있거나 30세인 모든 댄서를 선택하려면 $or 구성 연산자를 사용할 수 있습니다.
const dancers = await Dancer.find({
$or: [
{ age: 30 },
{ name: { $regex: 'Clinton'} }
]
});
또는 다음과 같이 함께 사용할 수도 있습니다.
const dancers = await Dancer.find({
$and: [
{
$or: [
{ age: { $gte: 30 } },
{ style: 'Salsa' }
]
},
{
$or: [
{ name: { $lte: 'D' } },
{ name: { $gte: 'B' } }
]
}
]
});
그러면 다음과 같은 모든 댄서가 선택됩니다.
이 작은 튜토리얼이 몽구스에서 쿼리 속도를 높이는 데 도움이 되었기를 바랍니다. 다른 쿼리 방법이 많이 있지만 이것이 가장 일반적입니다. 더 많은 옵션을 찾고 있다면 Web Dev Simplified의 30분 YouTube 동영상을 확인하세요.
질의를 통해 고급 수준에 도달할 수 있습니다!
Reference
이 문제에 관하여(몽구스 쿼리 시작하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/beerenjian/getting-started-with-mongoose-querying-40jn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)