반응형
MongoDB: 배열 일치 매개변수에서 하위 문서 찾기
MongoDB에서 특정 매개 변수를 충족하는 하위 문서의 값을 기반으로 문서를 찾고 싶습니다.특히 다음과 같이 구성된 문서가 있습니다.
{
name: "test",
data: [{
name: "test1",
start: 0,
end: 2
},
{
name: "test2",
start: 15
end: 18
}]
}
데이터 하위 문서의 시작 시간이 5 미만이고 동일한 하위 문서의 종료 시간이 5보다 클 경우에만 MongoDB에 내 문서를 반환하도록 하려면 어떻게 해야 합니까?지금은 제가 하면.
db.foo.findOne({
'data.start': { $lte: 5 },
'data.end': { $gte: 5 }
})
5는 0보다 크고 18보다 작기 때문에 항상 내 문서를 반환합니다.5(또는 어떤 값이든)가 0보다 크고 2보다 작거나 15보다 크고 18보다 작은 경우에만 문서를 반환하도록 MongoDB에 지시하려면 어떻게 해야 합니까?
$elemMatch를 사용하려고 합니다.
db.foo.findOne({ data: { $elemMatch : {
start: { $lte: 5 },
end: { $gte: 5 }
}}
})
없던 코드를 속일 생각으로 이 게시물을 우연히 발견했습니다 ;) 그래서 코드 스니펫을 공유하는 것에 대해 생각했습니다.Java
spring-data-mongodb 사용
Mongo mongo = new Mongo("localhost", 27017);
MongoTemplate mongoTemplate = new MongoTemplate(mongo, "db");
Query query = new Query();
query.addCriteria(Criteria.where("data").elemMatch(
Criteria.where("start").lte(5)
.andOperator(Criteria.where("end").gte(5))));
Foo foo = mongoTemplate.findOne(query, Foo.class);
언급URL : https://stackoverflow.com/questions/11823296/mongodb-find-subdocument-in-array-matching-parameters
반응형
'itsource' 카테고리의 다른 글
Excel VBA에서 문자열을 URL로 인코딩하려면 어떻게 해야 합니까? (0) | 2023.05.27 |
---|---|
기존 ENUM 유형에 새 값 추가 (0) | 2023.05.27 |
Angular 2에서 경로 간 이동 시 로딩 화면 표시 (0) | 2023.05.22 |
ES6 모듈을 사용하는 경우 Node.js의 __dirname에 대한 대안 (0) | 2023.05.22 |
Git vs Team Foundation 서버 (0) | 2023.05.22 |