2017-03-23 17 views
0

すべてのエントリに対して2つのフィールド(xとi)の固有の組み合わせを持つデータベースがあります。だから、_idフィールドを{_id:{a:x、b:i}}に設定しました。今私は、特定の値xを持つが、iの値を持つすべての値を取得したいと考えています。1フィールドが不明なMongoDB複合キークエリ

例:db.find({_id: {a: 1, b: { $exists: true}})またはさらに簡単:

{_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.someCollection.find({"_id.a": 1, "_id.b": { $exists: true}}) 

が溶液であると思われるが、これはオブジェクトのフィールド(しないキーで)としてを添加しかし同じように遅いです。より速い方法がありますか?

答えて

1

これを試しましたか?

+0

これは、値をプライマリキーとして設定するのではなく、データベースフィールドと同じように設定すると同じように遅くなるようです。これを照会する方法はありますか? –

+0

@ JordenvanBreemenこれは複合キーを照会する唯一の方法だと思います。私が見つけたらここで更新します。 –

関連する問題