从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"
。
您可以使用HTTP POST调用/db/_find/
在仪表板的外部运行此操作。请参阅此链接了解更多信息:
https://docs.cloudant.com/cloudant_query.html#finding-documents-using-an-index
更新:使用文本索引和书签
上述方法假定你要删除的每个文档,每一次重新运行查询。如果您使用升序排序,则始终按顺序处理文档,但如果使用降序排序,则可以在插入新文档时处理它们。
另一种方法是使用书签(如下面评论中的OP所建议的)。首先要在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
请参阅下面的答案。如果还有其他限制阻止你这样做,请更新你的问题,我会很乐意看一看。 – markwatsonatx