У меня есть следующая структура (это не может быть изменено, то есть я должен работать):
{
"_id" : ObjectId("abc123"),
"notreallyusedfields" : "dontcare",
"data" : [
{
"value" : "Demian",
"otherSomtimesInterestingFields": 1
"type" : title,
},
{
"value" : "200",
"otherSometimesInterestingFields": 1
"type" : length,
},
{
"value" : "Hesse",
"otherSometimesInterestingFields": 1
"type" : author,
},
many others
]
}
Я хотел бы сохранить элементы массива данных (основанные на "типе")или как-то ссылаться на них, но я не знаю как.Не каждый массив данных имеет элементы одного типа (иногда, например, отсутствует автор и т. Д.).Если бы это было так, и порядок гарантирован, я мог бы использовать оператор arrayElementAt следующим образом:
$project:
{
title: { $arrayElemAt: [ "$data", 0 ] },
length: { $arrayElemAt: [ "$data", 1 ] },
author: { $arrayElemAt: [ "$data", 2 ] },
}
Как вы могли бы сделать что-то подобное с данной структурой?
Мне это нужно, потому чтоУ меня есть структура, в основном поля внутри массива данных для данной схемы, и я не могу по-настоящему использовать объединение или группировку, где я не могу сказать, какое «поле» (какой элемент массива данных) нужно сгруппировать или объединитьот.Вот почему я думаю, что нужный элемент должен быть как-то «сохранен» с именем, чтобы я мог ссылаться на них.
Я могу обойти проблему, используя java и выполняя там все (как я это делал сприсоединиться к проблеме), но становится все хуже, если я продолжу решать эти проблемы в JAVA вместо mongoDB.
Есть идеи?Спасибо!