Mam obiekt przechowywany w arangodb, który ma dodatkowe obiekty wewnętrzne, mój aktualny przypadek użycia wymaga aktualizacji jednego z elementów.Zaktualizuj obiekt wewnętrzny w arangodb
Store Object
{
"status": "Active",
"physicalCode": "99999",
"postalCode": "999999",
"tradingCurrency": "USD",
"taxRate": "14",
"priceVatInclusive": "No",
"type": "eCommerce",
"name": "John and Sons inc",
"description": "John and Sons inc",
"createdDate": "2015-05-25T11:04:14+0200",
"modifiedDate": "2015-05-25T11:04:14+0200",
"physicalAddress": "Corner moon and space 9 station",
"postalAddress": "PO Box 44757553",
"physicalCountry": "Mars Sector 9",
"postalCountry": "Mars Sector 9",
"createdBy": "john.doe",
"modifiedBy": "john.doe",
"users": [
{
"id": "577458630580",
"username": "john.doe"
}
],
"products": [
{
"sellingPrice": "95.00",
"inStock": "10",
"name": "School Shirt Green",
"code": "SKITO2939999995",
"warehouseId": "723468998682"
},
{
"sellingPrice": "95.00",
"inStock": "5",
"name": "School Shirt Red",
"code": "SKITO245454949495",
"warehouseId": "723468998682"
},
{
"sellingPrice": "95.00",
"inStock": "10",
"discount": "5%",
"name": "School Shirt Blue",
"code": "SKITO293949495",
"warehouseId": "723468998682"
}
]
}
chcę zmienić tylko jeden z produktów, wartość zapasów
{
"sellingPrice": "95.00",
"inStock": "10",
"discount": "5%",
"name": "School Shirt Blue",
"code": "SKITO293949495",
"warehouseId": "723468998682"
}
Podoba sklep aktualizacja Stock mniej 1, gdzie sklep id = x, coś w tej sprawie
FOR store IN stores
FILTER store._key == "837108415472"
FOR product IN store.products
FILTER product.code == "SKITO293949495"
UPDATE product WITH { inStock: (product.inStock - 1) } IN store.products
Oprócz ab może mieć sens przechowywanie produktu jako osobnego dokumentu w kolekcji store_products. Wierzę w NOSQL, że jest to najlepsze podejście do zmniejszania rozmiaru dokumentu.
Myślę, że masz rację. Przechowywanie produktów oddzielnie od sklepów ma sens. Umożliwi to łatwe i wydajne aktualizowanie poszczególnych produktów (i sklepów). Jeśli sklep i wszystkie jego produkty były zawarte w jednym dokumencie, jak wyżej, cały obiekt sklepu musiałby zostać zapisany dla każdej aktualizacji produktu, co będzie bardzo nieefektywne. Poza tym sensowne może być przechowywanie wartości 'inStock' jako liczby zamiast używania łańcuchów. To samo dotyczy cen. – stj