Сравнить две коллекции в 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}}
]);