1

以下の記録があります。

Record 1:  
{
    "status": "active",
    "users": [
        {
            "name": "foo",
            "status": "a"
        },
        {
            "name": "foo",
            "status": "b"
        }        
    ]
}

Record 2:  
{
    "status": "active",
    "users": [
        {
            "name": "bar",
            "status": "a"
        },
        {
            "name": "foo",
            "status": "b"
        }        
    ]
}

user.nameここで、が「foo」であり、が「a」であるレコードのみを返したいと考えてuser.statusいます。つまり、要件を満たすため、レコード 1 を取得する必要があります。

これを実現するために、レコード内の配列に対して AND 演算を行うにはどうすればよいですか? 次のクエリを試しました。

{
    "$and": [
        {
            "users.name": "foo"
        },
        {
            "users.status": "a"
        }
    ]
}

しかし、両方のレコードを取得します-最初のレコードのみが必要です(ユーザー配列には、名前が「foo」でステータスが「a」のエントリがあるため)。

手がかりはありますか?

4

2 に答える 2