2017-03-23 18 views
0

모든 항목에 대해 두 개의 필드 (x와 i)를 고유하게 조합 한 데이터베이스가 있습니다. 그래서 _id 필드를 {_id : {a : x, b : i}}로 설정했습니다. 이제 특정 값 x를 가지고 있지만 i에 대한 값을 가진 모든 값을 검색하려고합니다.하나의 필드를 알 수없는 MongoDB 복합 키 쿼리

예 :

{_id: {a: 1, b: 5}}, 
    {_id: {a: 1, b: 3}}, 
    {_id: {a: 2, b: 5}} 
    {_id: {a: 3, b: 3}} 

지금은 같은 것을하고 싶지 : 반환해야 db.find({_id: {a: 1}) :

{_id: {a: 1, b: 5}}, 
    {_id: {a: 1, b: 3}} 

를 내가이를 수있는 방법이 있나요 db.find({_id: {a: 1, b: { $exists: true}}) 또는 쉽게? 또는 다른 말로하면이 복합 기본 키에서 어떤 방식 으로든 쿼리 할 수 ​​있습니까? 현재 개체 자체에 필드를 추가했지만 내 데이터 집합이 실제로 커질수록 이것이 최적의 솔루션이 아닙니다.

편집 :

db.someCollection.find({"_id.a": 1, "_id.b": { $exists: true}}) 

이 해결책이 될 것 같습니다,이 객체에 필드 (안 키)와 같은를 추가로하지만 마찬가지로 느립니다. 더 빠른 방법이 있습니까?

답변

1

시도해 보셨습니까?

+0

이 값은 기본 키로 값을 설정하지 않고 데이터베이스 필드로 설정하는 것만 큼 느린 것처럼 보입니다. 이것을 쿼리하는 더 빠른 방법이 있습니까? –

+0

@JordenvanBreemen 복합 키를 쿼리하는 유일한 방법이라고 생각합니다. 내가 찾으면 나는 여기에서 갱신 할 것이다. –