:morphia 및 mongodb에서 외래 키 (dbref)로 레코드를 찾는 방법은 무엇입니까? 내가 엔티티 다음 한
class Linf {
@Id
ObjectId id;
@Reference
Denied denied;
}
내가 특정 ID로 개체를 거부 한 모든 Linfs을 찾고 싶어요. 어떻게해야합니까? 이 쿼리는 인덱스를 사용합니까? 가능하면 전체 스캔을 피하고 싶습니다.
고맙습니다.
:morphia 및 mongodb에서 외래 키 (dbref)로 레코드를 찾는 방법은 무엇입니까? 내가 엔티티 다음 한
class Linf {
@Id
ObjectId id;
@Reference
Denied denied;
}
내가 특정 ID로 개체를 거부 한 모든 Linfs을 찾고 싶어요. 어떻게해야합니까? 이 쿼리는 인덱스를 사용합니까? 가능하면 전체 스캔을 피하고 싶습니다.
고맙습니다.
이 나를 위해 작동합니다
Denied d2 = new Denied();
d2.id = new ObjectId("52b4709f423d856472c34fa1");
List list = datastore
.createQuery(Linf.class)
.field("denied")
.equal(d2).asList();
당신이 "거부"에 대한 인덱스가없는 경우에 따라서는 전체 컬렉션 중 하나의 방법을 스캔하지만, 이런 일이 당신을 위해 무엇을해야 할 것이다 :
datastore.createQuery(Linf.class).field("denied").equal(new Key<Denied>(Denied.class, id)).fetch()
경고 : 쿼리/업데이트 유형이 일치하지 않을 수 있습니다. 'org.kriyak.orm.Linf.denied'필드에 'com.github.jmkgreen.morphia.Key'유형의 인스턴스를 사용하여 'org.kriyak.orm.Denied'로 선언되었습니다. –
그건 수정되었습니다. 공식 버전. 제임스의 포크는 본질적으로 공식 버전에 찬성하여 폐쇄되었습니다. 다른 버전으로 업데이트하여 문제가 지속되는지 확인하십시오. 어쨌든 그것은 단지 경고 일 뿐이지 만 나는 그것을 고쳤다 고 믿는다. 0.105가 아니라면 새해 이후에 출시 할 0.106이 될 것입니다. – evanchooly