MongoDBC# 문자열에서 '좋아요' 쿼리
저는 공식 mongodbc# 드라이버를 사용하고 있습니다.나는 SQL과 유사한 mongodb를 쿼리하고 싶습니다. 비슷한 것.db.users.find({name:/Joe/}
c# 드라이버
c# 쿼리는 다음과 같이 표시됩니다.
Query.Matches("name", BsonRegularExpression.Create(new Regex("Joe")));
업데이트:
@RoberStam 제안에 따르면 이를 위한 더 간단한 방법이 있습니다.
Query.Matches("name", "Joe")
c# 드라이버 2.1(MongoDB 3.0)의 경우
var collection = database.GetCollection<BsonDocument>("<<name of the collection>>");
var filter = Builders<BsonDocument>.Filter.Regex("name", new BsonRegularExpression("Joe"));
var result = await collection.Find(filter).ToListAsync();
c# 드라이버 2.2(MongoDB 3.0)의 경우
var filter = new BsonDocument { { parameterName, new BsonDocument { { "$regex", value }, { "$options", "i"} } } }
var result = collection.Find(filter).ToList();
MongoDBC# 드라이버에는 사용할 수 있는 BsonRegex 유형이 있습니다.
정규식이 SQL에 가장 가깝습니다.LIKE
진술.
접두사가 붙은 정규식은 다음과 같이 인덱스를 사용할 수 있습니다./^Joe/
색인을 사용할 것입니다./Joe/
하지 않을 것이다.
@Sridhar 덕분에 - 나에게 효과가 있었던 비슷한 접근법.
public List<SearchModel> GetSearchResult(string searchParam) => _collection.Find(new BsonDocument { { "Datetime", new BsonDocument { { "$regex", searchParam }, { "$options", "i" } } } }).ToList(); // Search DateTime "Like"
Mongodb 문서의 속성에서 변수 'textToSearch'의 값을 검색해야 한다고 가정합니다.
예:우리는 모든 기록에서 매니저를 검색해야 합니다.JobModel.Title
포함하다manager
.그것은textToSearch=manager
기록에 의하면(textToSearch
문자열 유형입니다.저는 답변의 마지막에 정규식을 몇 개 추가했습니다.textToSearch에 포함된 텍스트를 다루려면 textToSearch는 몇 가지 시나리오로 시작합니다.)
동등한 C# 코드:
Note: I have also shown how you can append to your existing filter, ignore it if not required.
var mongoBuilder = Builders<BsonDocument>.Filter;
var filter = mongoBuilder.Eq(y => y.JobModel.Category, "full time");
if (!string.IsNullOrEmpty(textToSearch))
{
textToSearch = "/.*" + textToSearch + ".*/i"; // this regex will search all the records which contains textToSearch and ignores case
filter = filter & mongoBuilder.Regex(y => y.JobModel.Title, new BsonRegularExpression(textToSearch));
}
동등한 Mongo 쿼리 코드:
db.jobs.find({ "JobModel.Category" : "full time",
"JobModel.Title" : /.*manager.*/i })
일부 유용한 정규식:
- 이 regex는 textToSearch를 포함하고 대소문자를 무시하는 모든 레코드를 검색합니다.
textToSearch = "/.*" + textToSearch + ".*/i";
- 이 정규식은 textToSearch로 시작하고 대소문자를 무시하는 모든 레코드를 검색합니다.
textToSearch = "/^" + textToSearch + "/i";
- 이 정규식은 textToSearch로 시작하는 모든 레코드를 검색하고 대소문자를 무시하지 않습니다.
textToSearch = "/.*" + textToSearch + ".*/";
언급URL : https://stackoverflow.com/questions/8382307/mongodb-c-sharp-query-for-like-on-string
'programing' 카테고리의 다른 글
VBA 편집기는 줄 끝에 있는 공백을 자동으로 삭제합니다. (0) | 2023.07.03 |
---|---|
git로 특정 디렉터리를 가져오는 방법 (0) | 2023.07.03 |
워드프레스 분류법 - 어떤 object_id를 어떻게 알 수 있습니까? (0) | 2023.07.03 |
R이 있는 Gantt 관리도 (0) | 2023.07.03 |
'HTMLInputElement'에서 'value' 속성을 설정하지 못했습니다. (0) | 2023.07.03 |