Ich habe ein Objekt in Arangodb gespeichert, die zusätzliche innere Objekte hat, erfordert mein aktueller Anwendungsfall, dass ich nur eines der Elemente aktualisieren.Update inneres Objekt in Arangodb
Shop Objekt
{
"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"
}
]
}
I
{
"sellingPrice": "95.00",
"inStock": "10",
"discount": "5%",
"name": "School Shirt Blue",
"code": "SKITO293949495",
"warehouseId": "723468998682"
}
Wie Update Store Produkt Lager nur eines der Produkte Bestandswert ändern wollen weniger 1, wo Speicher id = x, etwas zu diesem Effekt
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
Abgesehen von der ab Möglicherweise ist es sinnvoll, das Produkt als separates Dokument in der Kollektion store_products zu speichern. Ich glaube an NOSQL, das ist der beste Ansatz, um die Dokumentengröße zu reduzieren.
Ich denke, du hast Recht. Es ist sinnvoll, Produkte getrennt von Geschäften zu lagern. Dies ermöglicht eine einfache und effiziente Aktualisierung einzelner Produkte (und Speicher). Wenn der Speicher und alle seine Produkte wie oben in einem einzelnen Dokument enthalten wären, müsste das gesamte Speicherobjekt für jedes Produkt-Update gespeichert werden, was sehr ineffizient wird. Abgesehen davon kann es sinnvoll sein, den 'inStock'-Wert als Zahl zu speichern, anstatt Strings zu verwenden. Gleiches gilt für die Preise. – stj