Сравнить две коллекции в mongodb, используя Java или простой запрос

У меня есть следующий документ (Json) галереи,

    {
        "_id": "53698b6092x3875407fefe7c",
        "статус": "активный",
        "цвета": [
            "Красный",
            "Зеленый"
        ],
        "картины": [
            {
                "имя": "МонаЛиза",
                "by": "Леонардода Винчи"
            },
            {
                "name": "JungleArc",
                "by": "РайБургграф"
            }
        ]
    }

Теперь у меня также есть одна коллекция цветов, скажем,
КОЛЛЕКЦИЯ ЦВЕТА: ["черный", "желтый", "красный", "зеленый", "синий", "розовый"]
Я хочу получить картины по их названию, совпадающему с предоставленным текстом, скажем "MonaLisa" (как поисковый запрос), а также я хочу сравнить два цвета с COLORS-COLLECTION, если у цветов есть какой-либо из совпадающих цветов в COLORS-COLLECTION, тогда он должен вернуть картина.
Я хочу что-то вроде ниже:

 

    {
        "картины": [
            {
                "имя": "МонаЛиза",
                "by": "Леонардода Винчи"
            }
        ]
    }

Пожалуйста, помогите мне!!. Заранее спасибо.

1 ответ

Решение

Если я правильно вас понял, структура агрегации сделает вашу работу:

db.gallery.aggregate([
    {"$unwind": "$paintings"},
    {"$match": {"paintings.name": 'MonaLisa', "colors": {"$in": ["black","yellow","red","green","blue","pink"]}}},
    {"$project": {"paintings": 1, "_id": 0}}
]);
Другие вопросы по тегам