有许多选项可用于从 Cloudant 检索文档。视图是允许您查询、排序和聚合文档的基础技术。在您的特定示例中,听起来您只想获取最新(或最少)的文档。您可以使用视图来执行此操作,或者在 Cloudant 中您可以简单地创建一个索引。
假设您有一个名为create_date 的日期字段。在 Cloudant 中,您可以像这样创建索引(转到查询,然后单击“您的可用索引”旁边的编辑):
{
"index": {
"fields": [
"create_date"
]
},
"type": "json"
}
这将创建一个视图,您将看到它列在“设计文档”下。您可以按如下方式在仪表板中查询该视图:
{
"selector": {
"create_date": {
"$gt": 0
}
},
"fields": [
"_id",
"_rev"
],
"sort": [
{
"create_date": "desc"
}
],
"limit": 1
}
注意,我已将查询限制为 1 个文档。这将返回最近添加到 Cloudant 的文档。要检索添加到 Cloudant 的最早文档,请将排序更改为 "create_date": "asc"。
您可以使用对 /db/_find/ 的 HTTP POST 调用在仪表板外部运行此操作。有关详细信息,请参阅此链接:
https://docs.cloudant.com/cloudant_query.html#finding-documents-using-an-index
更新:使用文本索引和书签
上述方法假设您要删除每个文档并每次重新运行查询。如果您使用升序排序,您将始终按顺序处理文档,但如果您使用降序排序,则可以在插入新文档时处理它们。
另一种方法是使用书签(正如 OP 在下面的 cmets 中所建议的那样)。首先在 Cloudant 中创建一个文本索引:
{
"index": {},
"type": "text"
}
运行与上述相同的查询。结果现在将包含一个类似于以下内容的bookmarks 字段:
{
"docs":[{
"_id":"aa279ae2835f51d8ea13ee3e6ae3a210",
"_rev":"1-e90f3814f49b3e89158f8d2337de89cb"}
],
"bookmark": "g1AAAAD4eJzLYWBgYM5gTmHQSElKzi9KdUhJMtRLytVNSczRLS5JzEtJLEox1EvOyS9NScwr0ctLLckB6mBKUgCSSfb____PAvPdHK_uzd_TwMCQKJ1Fuml5LECSYQGQAhq4H2HiAWEHoIkKaCaaE23iAYiJ9xEmHhY7AHZjFgAnFk_X"
}
在后续的查询中可以传递书签来按顺序遍历文档:
{
"selector": {
"create_date": {
"$gt": 0
}
},
"fields": [
"_id",
"_rev"
],
"sort": [
{
"create_date": "desc"
}
],
"limit": 1,
"bookmark" : "g1AAAAD4eJzLYWBgYM5gTmHQSElKzi9KdUhJMtRLytVNSczRLS5JzEtJLEox1EvOyS9NScwr0ctLLckB6mBKUgCSSfb____PAvPdHK_uzd_TwMCQKJ1Fuml5LECSYQGQAhq4H2HiAWEHoIkKaCaaE23iAYiJ9xEmHhY7AHZjFgAnFk_X"
}
更多关于书签的信息可以在这里找到:
https://docs.cloudant.com/cloudant_query.html#working-with-indexes