從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