>

$또는 aggregator를 사용하여 유모차에 전달 된 이름이 성 또는 이름과 일치하는지 확인하는 몽구스 쿼리가 있습니다.

질문은 대소 문자를 구분하며 $toLower 어 그리 게이터를 사용하여 대소 문자를 구분하지 않는 쿼리로 만들고 싶습니다.

그러나 $toLower 연산자를 포함시키는 방법을 알 수 없습니다.

내 코드는 다음과 같습니다 :

export let findByFirstOrLastName = (req: Request, res: Response) => {
    User.find({$or: [
        {firstName: req.params.name},
        {lastName: req.params.name}
    ]}).exec((err, user) => {
        if(err) {
            res.send(err);
        } else {
            res.send(user);
        }
    })
}

$바로 전에 그리고 각 필드에서 시도했습니다.

도움을 주시면 감사하겠습니다.

  • 답변 # 1

    $toLower 를 사용하여 데이터를 간단히 투영 할 수 있습니다  그런 다음 $match :

    db.collection.aggregate([
      {
        $project: {
          _id: 0,
          firstName: { $toLower: "$firstName" },
          lastName: { $toLower: "$lastName" }
        }
      },
      {
        $match: {
          $or: [
            { firstName: req.params.name },
            { lastName: req.params.name }
          ]
        }
      }
    ])
    
    

    여기서 작동하는 것을 볼 수 있습니다

    모든 말을 마치면 아마도 $text 를 살펴 봐야 할 것입니다  문자열을 다시 일치시킬 것인지 검색하십시오. 그리고 $regex  그들은 일반적으로 손을 잡고 있기 때문에. 이 현재 방법은 joh 와 일치하지 않습니다.  와이즈 비즈  등.

    john

관련 자료

  • 이전 javascript - 필요한 방식으로 기록하도록 스크립트를 수정할 수 없습니다
  • 다음 Java 9에서 jmeter 33을 시작할 수 없습니다