读取文档
此处显示的步骤演示了如何阅读文档:
-
发送
GET
请求以检索文件。 -
Run the following command:
https://$ACCOUNT.cloudant.com/$DATABASE/$DOCUMENT_ID
.
回顾一下,对于分区数据库来说,$DOCUMENT_ID
是由分区关键字部分和文档关键字部分组成的。
如果您不知道某个文件的 _id
、 可以 查询数据库所有文件。
由于IBM Cloudant的分布式、最终一致性特性,读取可能会返回过时数据。 特别是 即使是同一个客户端最近写入的数据,也可能无法在写入请求后立即从读取请求中返回。 要解决这一问题、 客户端可以在本地缓存数据状态。 缓存还有助于减少请求次数、提高应用程序性能并减轻数据库集群的负荷。 这种行为也适用于其他读取请求,例如MapReduce和搜索索引。
请参阅使用 HTTP 检索文档的示例:
GET /$DATABASE/$DOCUMENT_ID HTTP/1.1
您可以通过选择代码示例中的语言,自定义本节以使用编程语言。
请参阅检索文件的示例:
curl -H "Authorization: Bearer $API_BEARER_TOKEN" -X GET "$SERVICE_URL/products/small-appliances:1000042"
import com.ibm.cloud.cloudant.v1.Cloudant;
import com.ibm.cloud.cloudant.v1.model.Document;
import com.ibm.cloud.cloudant.v1.model.GetDocumentOptions;
Cloudant service = Cloudant.newInstance();
GetDocumentOptions documentOptions =
new GetDocumentOptions.Builder()
.db("products")
.docId("small-appliances:1000042")
.build();
Document response =
service.getDocument(documentOptions).execute()
.getResult();
System.out.println(response);
const { CloudantV1 } = require('@ibm-cloud/cloudant');
const service = CloudantV1.newInstance({});
service.getDocument({
db: 'products',
docId: 'small-appliances:1000042'
}).then(response => {
console.log(response.result);
});
from ibmcloudant.cloudant_v1 import CloudantV1
service = CloudantV1.new_instance()
response = service.get_document(
db='products',
doc_id='small-appliances:1000042'
).get_result()
print(response)
getDocumentOptions := service.NewGetDocumentOptions(
"products",
"small-appliances:1000042",
)
document, response, err := service.GetDocument(getDocumentOptions)
if err != nil {
panic(err)
}
b, _ := json.MarshalIndent(document, "", " ")
fmt.Println(string(b))
前面的围棋示例需要以下导入块:
import (
"encoding/json"
"fmt"
"github.com/IBM/cloudant-go-sdk/cloudantv1"
)
所有 Go 示例都要求 service
对象初始化。 有关更多信息,请参阅 API 文档中的 "身份验证 "部分 的示例。
响应包含您请求的文件、 如果无法检索到文件,则会给出错误说明。
请参阅检索文件的响应示例:
{
"_id": "exampleid",
"brand": "Foo",
"colours": [
"red",
"green",
"black",
"blue"
],
"description": "Slim Colourful Design Electronic Cooking Appliance for ...",
"image": "assets/img/0gmsnghhew.jpg",
"keywords": [
"Foo",
"Scales",
"Weight",
"Digital",
"Kitchen"
],
"name": "Digital Kitchen Scales",
"price": 14.99,
"productid": "1000042",
"taxonomy": [
"Home",
"Kitchen",
"Small Appliances"
],
"type": "product"
}
查询参数
您可以在 URL 中添加一些查询参数、 例如 /mydatabase/doc?attachments=true&conflicts=true
.
所有参数均为可选参数。
名称 | Type | 描述 | 缺省 |
---|---|---|---|
attachments |
布尔值 | 包括回复中的附件机构。 | 错 |
att_encoding_info |
布尔值 | 如果特定附件是压缩的,则在附件存根中包含编码信息。 | 错 |
atts_since |
修订字符串数组 | 仅包括特定修订后的附件。 不包括指定修订的附件。 | [] |
conflicts |
布尔值 | 包括有关文件冲突的信息。 | 错 |
deleted_conflicts |
布尔值 | 包括有关已删除的冲突修订的信息。 | 错 |
latest |
布尔值 | 强制检索最新的“叶子”修订版,无论请求的是什么修订版。 | 错 |
local_seq |
布尔值 | 包括文件的最后更新序列号。 | 错 |
meta |
布尔值 | 与指定 conflicts 、deleted_conflicts 和 open_revs 查询参数相同。 |
错 |
open_revs |
数组或 all |
检索指定修订页的文件。 此外,它还接受返回所有叶修订版的 all 值。 |
[] |
rev |
字符串 | 检索指定修订版本的文件。 |
|
revs |
布尔值 | 包括所有已知文件修订版清单。 | 错 |
revs_info |
布尔值 | 包括所有已知文件修订版的详细信息。 | 错 |
阅读更多
一次获取多个文档、
查询数据库 使用 include_docs
选项。