[MONGODB] MongoDB의 : 배열 매칭 매개 변수에서 하위 문서 찾기
MONGODBMongoDB의 : 배열 매칭 매개 변수에서 하위 문서 찾기
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 내가 5 (또는 무엇이든 값)이 0보다 크고 미만 또는 이상 15 미만 18 인 경우에만 내 문서를 반환하는 MongoDB를 말할 수있는 방법 0보다 큰 미만 (18)을 항상 있기 때문에 내 문서를 반환합니다 ?
해결법
-
==============================
1.당신은 $ elemMatch를 사용하고 싶습니다.
당신은 $ elemMatch를 사용하고 싶습니다.
db.foo.findOne({ data: { $elemMatch : { start: { $lte: 5 }, end: { $gte: 5 } }} })
-
==============================
2.이 없었다 코드 부정 행위의이 게시물의 생각을 가로 질러왔다;을 따라서는 사용하여 Java에서 코드를 공유하는 생각) 스프링 데이터를-MongoDB를
이 없었다 코드 부정 행위의이 게시물의 생각을 가로 질러왔다;을 따라서는 사용하여 Java에서 코드를 공유하는 생각) 스프링 데이터를-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);
from https://stackoverflow.com/questions/11823296/mongodb-find-subdocument-in-array-matching-parameters by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB의 여러 컬렉션에서 검색 (0) | 2019.12.17 |
---|---|
[MONGODB] 어떻게 화합물 인덱스의 순서는 MongoDB의 성능 현명한에 문제가 있습니까? (0) | 2019.12.17 |
[MONGODB] MongoDB의 가치에 의해 곱하기 필드 (0) | 2019.12.16 |
[MONGODB] 어떻게 삽입 시간 유성 모음을 정렬 할 수 있습니다? (0) | 2019.12.16 |
[MONGODB] mongoimport를 사용하여 가져 오기 이상의 1 JSON 파일 (0) | 2019.12.16 |