0
我有一個包含多個文檔的數據庫。每個文檔都有一個user_id字段。 假設這些文檔屬於兩個用戶:1和2. 我想爲每個用戶提取一個最新的文檔。我應該如何實現搜索索引? 我現在可以通過使用user_id獲得用戶的所有文檔:1 但是,如何在一個查詢中將每個用戶的文檔編號限制爲一個?在Cloudant上搜索每個用戶的一個文檔
我有一個包含多個文檔的數據庫。每個文檔都有一個user_id字段。 假設這些文檔屬於兩個用戶:1和2. 我想爲每個用戶提取一個最新的文檔。我應該如何實現搜索索引? 我現在可以通過使用user_id獲得用戶的所有文檔:1 但是,如何在一個查詢中將每個用戶的文檔編號限制爲一個?在Cloudant上搜索每個用戶的一個文檔
假設你有每個文檔的日期屬性,你可以做到這一點,如下所示:
創建以下指標:
{
"index": {
"fields": [
{"user_id":"desc"},
{"date_field":"desc"}
]
},
"type": "json"
}
要查詢最新的文檔爲user_id
==「1」的查詢應該是這樣的:
{
"selector": {
"user_id": "1"
},
"fields": [
"_id",
"user_id",
"date_field"
],
"sort": [
{ "user_id": "desc" },
{ "date_field": "desc" }
],
"limit":1
}
如果你想在一個查詢返回多個用戶,那麼你就必須做這樣的事情:
latest
或類似財產上user_id
和latest
添加一個索引:
{
"index": {
"fields": [
"user_id",
"latest"
]
},
"type": "json"
}
只要添加一個新的文檔找到該user_id
其中latest
是真實的文件:
{
"selector": {
"user_id": "1",
"latest" : true
},
"fields": [
"_id",
"user_id",
"latest"
]
}
設置latest
關於該文件的
latest
=真此查詢可以找到所有用戶提供最新的DOC:
{
"selector": {
"user_id": {"$gt":null},
"latest" : true
},
"fields": [
"_id",
"user_id",
"latest"
]
}