Stwierdzam, że struktura agregacji mongodb jest niezwykle potężna - wydaje się dobrym rozwiązaniem do spłaszczenia obiektu. Mój schemat używa tablicy podrzędnych obiektów w tablicy zwanej materiałami. Liczba materiałów jest zmienna, ale konkretne pole (kategoria) będzie unikalne dla obiektów w tablicy. Chciałbym użyć struktury agregacji do spłaszczenia struktury i dynamicznej zmiany nazw pól na podstawie wartości pola kategorii. Nie mogłem znaleźć łatwego sposobu na osiągnięcie tego przy pomocy projektu $ wraz z $ cond. Czy istnieje sposób?MongoDB Aggregation Framework - dynamiczne zmienianie nazwy pola
Powodem szeregu istotnych przedmiotów jest umożliwienie prostego przeszukiwania:
np {'materials.name': 'XYZ'} cofa każdy dokument, w którym znaleziono XYZ.
E.g. z przed i po dokumencie
{
"_id" : ObjectId("123456"),
"materials" : [
{
"name" : "XYZ",
"type" : "Red",
...
"category" : "A"
},
{
"name" : "ZYX",
"type" : "Blue",
...
"category" : "B"
}]
}
do
{
"material_A_name" : "XYZ",
"material_A_type" : "Red",
...
"material_B_name" : "ZYX",
"material_B_type" : "Blue",
...
}
Twój dokument "po" jest nieprawidłowy JSON – JohnnyHK
Dzięki, zaktualizowany - był to błąd z tworzenia makiety w moim edytorze – user2234151
Ok, widzę, co próbujesz teraz zrobić. W strukturze ag nie ma zbyt wiele wsparcia dla dynamicznie generowanych kluczy, więc nie widzę sposobu, w jaki można to zrobić. Być może będziesz musiał po prostu opublikować wynik w kodzie, aby to zrobić. – JohnnyHK