programing

몽구스에서 "LIKE" 연산자를 사용하려면 어떻게 해야 합니까?

powerit 2023. 5. 3. 21:57
반응형

몽구스에서 "LIKE" 연산자를 사용하려면 어떻게 해야 합니까?

몽구스를 사용하여 쿼리할 때 문제가 발생합니다.나는 이 몽구스를 따라 코딩합니다.js: 사용자 이름 LIKE 값으로 사용자를 찾습니다.하지만 빈칸으로 돌아옵니다.

이것은 내 코드가 공백으로 반환됩니다.

 var promise = UserSchema.find({name: /req.params.keyword/ }).limit(5);

저는 이 리턴 블랭크 시즈를 시도했습니다.

var n = john; var promise = UserSchema.find({name: /n/ }).limit(5);

하지만 저는 이것이 효과가 있다고 노력했습니다.

 var promise = UserSchema.find({name: /john/ }).limit(5);

변수를 사용한 후 공백으로 반환하는 이유는 무엇입니까?

사용하다$regex몽롱한

정규식 사용 방법

select * from table where abc like %v%

몽고로

 var colName="v";
 models.customer.find({ "abc": { $regex: '.*' + colName + '.*' } },
   function(err,data){
         console.log('data',data);
  });

당신의 질문은 다음과 같습니다.

var name="john";
UserSchema.find({name: { $regex: '.*' + name + '.*' } }).limit(5);

아니면 간단히

const name = "John"
UserSchema.find({name: {$regex: name, $options: 'i'}}).limit(5);

대소문자를 구분하지 않는 i의 경우

이것이 제가 검색 문자열이 이름/이메일에 있는지 찾기 위한 방법입니다.누군가에게 도움이 되길 바랍니다.

const getPeerSuggestions = async (req, res, next) => {

  const { search } = req.query;
  const rgx = (pattern) => new RegExp(`.*${pattern}.*`);
  const searchRgx = rgx(search);

  const peers = await User.find({
    $or: [
      { name: { $regex: searchRgx, $options: "i" } },
      { email: { $regex: searchRgx, $options: "i" } },
    ],
  })
    .limit(5)
    .catch(next);

  res.json(peers);
};

RegExp 개체를 사용하여 변수로 정규식을 만들고 검색에서 대소문자를 구분하지 않으려면 'i' 플래그를 추가할 수 있습니다.

const mongoose = require('mongoose');
const User = mongoose.model('user');

const userRegex = new RegExp(userNameVariable, 'i')
return User.find({name: userRegex})

없이.aggregate저한테는 효과가 없었어요.하지만 이는 다음과 같습니다.

db.dbname.aggregate([{ "$match" : {"name" : { $regex: '.*SERGE.*', $options: 'i' } }}, { $sort: { "createdTime" : -1 }} ]).pretty()
 select * from table where abc like %_keyword%

몽고로

  const list = await ProductModel.find({{ pname :{ $regex : '.*'+ _keyword + '.*' }});

여기서_keyword제품 모델을 검색하는 동안 과일, 펜 등 모든 텍스트가 될 수 있습니다.

동적 값을 사용하여 정규식 조회를 실행할 수 있습니다.RegExp:

 var promise = UserSchema.find({name: new RegExp(req.params.keyword, 'i') }).limit(5);

주의:'i'대소문자를 구분하지 않는 옵션입니다.

언급URL : https://stackoverflow.com/questions/43729199/how-i-can-use-like-operator-on-mongoose

반응형