몽구스 쿼리 시작하기

11832 단어 mongodbjavascript
이 기사에서는 Mongoose로 쿼리를 수행하는 주요 명령인 MongooseModel.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' } }
      ]
    }
  ]
});



그러면 다음과 같은 모든 댄서가 선택됩니다.
  • 30세 이상이거나 살사 댄스 스타일을 가지고 있는 것
  • "D"앞이나 "B"뒤의 문자로 시작하는 이름이 있습니다
  • .

    이 작은 튜토리얼이 몽구스에서 쿼리 속도를 높이는 데 도움이 되었기를 바랍니다. 다른 쿼리 방법이 많이 있지만 이것이 가장 일반적입니다. 더 많은 옵션을 찾고 있다면 Web Dev Simplified의 30분 YouTube 동영상을 확인하세요.
    질의를 통해 고급 수준에 도달할 수 있습니다!

    좋은 웹페이지 즐겨찾기