반응형
$in을 사용한 대소문자 구분 안 함 검색
다음을 사용하여 mongodb의 컬렉션에서 열을 검색하는 방법$in
검색을 위한 요소들의 배열을 포함하고 또한.caseInsensitive
열에 있는 요소들의 일치?
데이터 예:
{
name : "...Event A",
fieldX : "aAa"
},
{
name : "...Event B",
fieldX : "Bab"
},
{
name : "...Event C",
fieldX : "ccC"
},
{
name : "...Event D",
fieldX : "dDd"
}
또한 "fieldX"가 배열의 모든 값(optValues)에 포함된 문서를 원합니다.
var optValues = ['aaa', 'bbb', 'ccc', 'ddd'];
var optRegexp = [];
optValues.forEach(function(opt){
optRegexp.push( new RegExp(opt, "i") );
});
db.collection.find( { fieldX: { $in: optRegexp } } );
이것이 도움이 되길 바랍니다!
p.s.: 이것이 웹 애플리케이션에서 태그로 검색하는 저의 솔루션이었습니다.
$elemMatch를 정규식 검색과 함께 사용할 수 있습니다. 예를 들어 다음 컬렉션에서 "파란색"을 검색해 보겠습니다.
db.items.save({
name : 'a toy',
colors : ['red', 'BLUE']
})
> ok
db.items.find({
'colors': {
$elemMatch: {
$regex: 'blue',
$options: 'i'
}
}
})
>[
{
"name": "someitem",
"_id": { "$oid": "4fbb7809cc93742e0d073aef"},
"colors": ["red", "BLUE"]
}
]
이것은 저에게 딱 맞습니다.
코드에서 다음과 같은 사용자 지정 쿼리를 만들 수 있습니다.
{
"first_name":{
"$in":[
{"$regex":"^serina$","$options":"i"},
{"$regex":"^andreW$","$options":"i"}
]
}
}
쿼리 후 mongo에서 다음으로 변환됩니다.
db.mycollection.find({"first_name":{"$in":[/^serina$/i, /^andreW$/i]}})
"$nin"도 마찬가지입니다.
이것은 꽤 간단합니다.
const sampleData = [
RegExp("^" + 'girl' + "$", 'i'),
RegExp("^" + 'boy' + "$", 'i')
];
const filerObj = { gender : {$in : sampleData}};
Java에서 이를 수행하는 방법은 다음과 같습니다.
List<String> nameList = Arrays.asList(name.split(PATTERN));
List<Pattern> regexList = new ArrayList<>();
for(String name: nameList) {
regexList.add(Pattern.compile(name , Pattern.CASE_INSENSITIVE));
}
criteria.where("Reference_Path").in(regexList);
여기 제가 사용한 배열의 데이터에서 여러 조건(정규식)을 가진 케이스 인센시티브 검색(쿼리)이 있습니다.$in
하지만 대/소문자를 구분하지 않는 검색은 지원하지 않습니다.
예제 데이터
{
name : "...Event A",
tags : ["tag1", "tag2", "tag3", "tag4]
},
{
name : "...Event B",
tags : ["tag3", "tag2"]
},
{
name : "...Event C",
tags : ["tag1", "tag4"]
},
{
name : "...Event D",
tags : ["tag2", "tag4"]
}
나의 질문
db.event.find(
{ $or: //use $and or $or depends on your needs
[
{ tags : {
$elemMatch : { $regex : '^tag1$', $options : 'i' }
}
},
{ tags : {
$elemMatch : { $regex : '^tag3$', $options : 'i' }
}
}
]
})
언급URL : https://stackoverflow.com/questions/10700921/case-insensitive-search-with-in
반응형
'programing' 카테고리의 다른 글
Oracle SQL Developer에서 관계를 볼 수 있는 방법이 있습니까? (0) | 2023.07.20 |
---|---|
모든 사용자 테이블을 잘라내는 방법은 무엇입니까? (0) | 2023.07.20 |
"LINQ 표현식 노드 유형 'Invoke'는 LINQ to Entities에서 지원되지 않습니다." - 스텀핑! (0) | 2023.07.15 |
정렬된 결과 집합의 위치를 기준으로 mysql 테이블에서 레코드에 대한 단일 행 번호 가져오기 (0) | 2023.07.15 |
실제 애플리케이션 측면에서 C, C# 및 C++의 차이점은 무엇입니까? (0) | 2023.07.15 |