如何在Couchbase的单个存储桶中存储不同类型的数据

时间:2019-01-29 15:04:18

标签: couchbase

我想将diff类型的数据存储在Couchbase的同一存储桶中,用谷歌搜索了它的doc_type和type参数,但是我不知道如何在我的数据中实现该数据,我尝试下面的代码,但是我不这样做不知道该怎么做?

我没有看到任何示例,我们将不胜感激

JsonObject doc = JsonObject.fromJson(consumerRecord.value().toString());
             String id=consumerRecord.key().toString();
             bucket.upsert(JsonDocument.create(id, doc));

1 个答案:

答案 0 :(得分:2)

Couchbase存储桶存储任何类型的文档。您不必做任何特别的事情。只要它是有效的JSON,就可以将其存储在Couchbase存储桶中。

现在,您可能需要某种方法来区分不同类型的文档(例如,出于查询目的)。因此,您可以将“类型”字段(或docType或您想要的任何内容)作为一种“标记”值。您可以在built-in travel-sample bucket中查看示例。例如,查看 airline_10 route_10000 文档:

airline_10
{
  "callsign": "MILE-AIR",
  "country": "United States",
  "iata": "Q5",
  "icao": "MLA",
  "id": 10,
  "name": "40-Mile Air",
  "type": "airline"
}

route_10000
{
  "airline": "AF",
  "airlineid": "airline_137",
  "destinationairport": "MRS",
  "distance": 2881.617376098415,
  "equipment": "320",
  "id": 10000,
  "schedule": [ ... ],
  "sourceairport": "TLV",
  "stops": 0,
  "type": "route"
}

请注意,一个类型为“航空公司”,另一个类型为“航线”。查找路线的查询示例:

SELECT t.*
FROM `travel-sample` t
WHERE t.type = 'route'
LIMIT 10

这是一种区分文档的方法。还要注意,密钥是在语义上构造的,因此也可以使用它们。这些都不是必需的,因此实际上取决于您计划访问文档的方式。