mon go агрегация в elemMatch для вложенных массивов - PullRequest
0 голосов
/ 23 января 2020

У меня есть документ вроде:

{
    "name": "abc"
    "array1": [
        {
            "_id": "87a015b3-b81c-4c75-8dd6-4fa0bd6d9660",
            "array2": [
                [
                   {
                        "_id": "123",    
                        "values": [{
                                "value": "ABC"
                            }
                        ]
                    }, 
                    .....
                    .....
                ],

                [
                    {
                        "_id": "789",
                        "values": [{
                                "value": "XYZ"
                            }
                        ]
                    }, 
                    .....
                    .....
                ]
            ]
        }
    ]
}

Как мы можем сделать $ elemMatch для фильтрации на основе _id и значений? Например, сопоставьте, если есть запись с "_id" = "123" и "value" = "AB C" внутри array1.array2.

1 Ответ

1 голос
/ 23 января 2020

Вы можете сделать это:

db.collection.find(
{"array1.array2": {$elemMatch: {$elemMatch: {_id: "123", "values.value": "ABC"}}}}
)

Я лично рекомендую вам, ребята, пересмотреть структуру вашего документа, так как в настоящее время я чувствую, что для меня это не имеет особого смысла.

...