首页 > 解决方案 > 如何为特定 ID 创建多产品

问题描述

我是 cosmos db 的新手,我正在创建一个基于 cosmos db 的 web api 项目。我创建了基本的 crud 操作。现在的问题之一是供应商有更多的行业,在行业供应商可能有不止一种产品。我创建一种产品,当我尝试创建更多的产品时,它显示错误 id 已经使用。这里我使用 id 作为分区键。问题二是某些供应商可能只有类别,所以我需要将产品直接添加到他们。请帮我构造它来解决问题。添加产品代码:

 public async Task<Catalog> AddProduct(
          Catalog order)
        {
            var requestOptions =
                new RequestOptions
                {
                    PartitionKey = new PartitionKey(order.Id.ToString())
                };

            var catalogDocument = await _cosmosClient.CreateDocumentAsync(
                UriFactory.CreateDocumentCollectionUri(
                    _azureCosmosDbOptions.Value.DatabaseId, "catalog"), order, requestOptions);

            return
                (Catalog)((dynamic)catalogDocument.Resource);
        }

我的 json 代码:

    "id": "8000003c-0001-fb00-b63f-84710c7967aa",

    "industy": {

      "category": [
        {

          "subcategory": [
            {
                product1,product2.....
                }

错误信息:{"code":409,"body":{"code":"Conflict","message":"系统中已经存在指定id的实体}

标签: asp.net-web-apiasp.net-coreazure-cosmosdb

解决方案


你不应该对这样的所有事情都有一个巨大的文档。使用单独的集合并将每个集合保存product为单独的文档,其中供应商、行业和类别作为该文档上的字段。然后,您可以轻松修改单个产品记录并在查询中检索给定供应商或类别的所有产品。


推荐阅读