itsource

MongoDB: 배열 일치 매개변수에서 하위 문서 찾기

mycopycode 2023. 5. 22. 21:03
반응형

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 }
  }}
})

없던 코드를 속일 생각으로 이 게시물을 우연히 발견했습니다 ;) 그래서 코드 스니펫을 공유하는 것에 대해 생각했습니다.Javaspring-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

반응형