Obecnie pracuję nad projektem, w którym używamy biblioteki couchbase 4.1 od dzisiaj dla witryny eCommerce.Couchbase 4.5 zwraca część dokumentu
Chciałbym przechowywać naszą stronę internetową całą strukturę kategorii w Couchbase jako pojedynczy dokument, a następnie zapytać o konkretną kategorię i zwrócić tę kategorię w niektórych przypadkach, aw innych przypadkach chciałbym zwrócić kategorię i jej kategorie podrzędne.
Jestem prawie pewny, że muszę użyć indeksera tablicowego, aby ten działał wydajnie, ale jestem całkiem nowy w Couchbase, więc nie jestem pewien, jak powinien on być zbudowany (a nawet, jeśli to możliwe).
Część mojego dokumentu wygląda następująco (istnieje 4 poziomy w strukturze i około 8-10 kategorii najwyższego poziomu):
{
"Categories": [
{
"DisplayName": "Category One",
"Id": 1,
"Categories": [
{
"DisplayName": "Child category",
"Id": 10,
"Categories": [
{
"DisplayName": "Child child category",
"Id": 100,
"Categories": [
{
"DisplayName": "Child child child category",
"Id": 1000
},
{
"DisplayName": "Sibling child category",
"Id": 1001
}
]
},
{
"DisplayName": "Child",
"Id": 101,
"Categories": [
{
"DisplayName": "Another child category",
"Id": 2001
}
]
}
]
}
]
}
]
}
Gdybym zapytania o id = 100 Chciałbym mieć mój wynik wygląda tak:
{
"DisplayName": "Child child category",
"Id": 100,
"Categories": [
{
"DisplayName": "Child child child category",
"Id": 1000
},
{
"DisplayName": "Sibling child category",
"Id": 1001
}
]
}
W niektórych przypadkach nie interesuje mnie posiadanie dziecka. Próbowałem utworzyć moje zapytanie przy użyciu tablicy (N1QL), aby wybrać do moich tablic, ale nie jestem pewien, czy jest to nawet możliwe, gdy poziomy obiektów złożonych.
Czy mogę dać mi wskazówki, jak to możliwe (nawet jeśli jest?). Używamy klienta Couchbase .NET.
poważaniem Martin
subdoc * może * świetnie pasować, ale nie służy do celów zapytań: musisz znać ścieżki, których potrzebujesz pobrać **. Jeśli jednak struktura dokumentu może zostać zmieniona tak, aby obiekt główny był słownikiem, 1 pozycja na kategorię, przy czym nazwa atrybutu jest identyfikatorem kategorii, może to działać. –