私はすべてのレコードを取得しようとしています(とすべてのレコードの数)は以下のような構造のため、モンゴDB - セカンドレベルの検索 - elemMatch
{
id: 1,
level1: {
level2:
[
{
field1:value1;
},
{
field1:value1;
},
]
}
},
{
id: 2,
level1: {
level2:
[
{
field1:null;
},
{
field1:value1;
},
]
}
}
私の要件は、持っているレコードの数を取得することですフィールド1に値を入力します(レベル2では少なくとも1つ)。私はすべてのidsまたはそのようなIDの数を取得すると言う必要があります。
私が使用しているクエリがある
、db.table.find({},
{
_id = id,
value: {
$elemMatch: {'level1.level2.field1':{$exists: true}}
}
}
})
示唆してください。
EDIT1: これは私がコメントで尋ねようとした質問です。私はコメントで正しく解明することができませんでした。したがって、質問を編集する。
{
id: 1,
level1: {
level2:
[
{
field1:value1;
},
{
field1:value1;
},
]
}
},
{
id: 2,
level1: {
level2:
[
{
field1:value2;
},
{
field1:value2;
},
{
field1:value2;
}
]
}
}
{
id: 3,
level1: {
level2:
[
{
field1:value1;
},
{
field1:value1;
},
]
}
}
私たちは、私はあなたが以下の検索クエリであることを行うことができます
value1: 2 // Once each for documents 1 & 3
value2: 1 // Once for document 2
ありがとうございます。フィールド1の値のグループ化(および対応するカウント)を返さなければならないかどうか、私はそれをどのように変更するのだろうかと思いましたか? –
私の更新された回答を参照してください – HoefMeistert
私は私の質問で明確でない場合は申し訳ありません。 'をvalue1 - - このクエリは、出力として、以下を返します3' 私が探している何かのように、 「VALUE1です - LEVEL2で2' 、文書のため、すべての値がされると仮定フィールド1と同じです。しかし、それは1つの項目としてカウントされるべきです(同じ文書内のfield1に複数のループがありますが) –