Tôi có một đối tượng được lưu trữ trong arangodb có các đối tượng bên trong bổ sung, trường hợp sử dụng hiện tại của tôi yêu cầu tôi chỉ cập nhật một trong các thành phần.Cập nhật đối tượng bên trong trong arangodb
cửa hàng 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"
}
]
}
Tôi muốn thay đổi chỉ là một trong các sản phẩm chứng khoán giá trị
{
"sellingPrice": "95.00",
"inStock": "10",
"discount": "5%",
"name": "School Shirt Blue",
"code": "SKITO293949495",
"warehouseId": "723468998682"
}
Giống như chứng khoán cập nhật cửa hàng sản phẩm ít 1 nơi lưu trữ id = x, một cái gì đó để tác động này
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
Ngoài ab ove có thể có ý nghĩa khi lưu trữ sản phẩm dưới dạng tài liệu riêng trong bộ sưu tập store_products. Tôi tin vào NOSQL đó là cách tiếp cận tốt nhất để giảm kích thước tài liệu.
Tôi nghĩ bạn nói đúng. Lưu trữ sản phẩm riêng biệt từ các cửa hàng sẽ có ý nghĩa. Điều đó sẽ cho phép cập nhật các sản phẩm riêng lẻ (và các cửa hàng) một cách dễ dàng và hiệu quả. Nếu cửa hàng và tất cả các sản phẩm của nó được chứa trong một tài liệu duy nhất như trên, thì toàn bộ đối tượng lưu trữ sẽ cần phải được lưu cho mọi bản cập nhật sản phẩm, điều này sẽ rất không hiệu quả. Ngoài ra, nó có thể có ý nghĩa để lưu trữ giá trị 'inStock' dưới dạng số thay vì sử dụng chuỗi. Điều tương tự cũng áp dụng cho giá cả. – stj