У меня есть структура документа, как показано ниже:
{
"_id": "6ed3d427045228dce9e3b38d111cb046",
"_rev": "1-952bddae5572fbf2b0ce4a165c19c98b",
"type": "USER",
"name": "ABC",
"email": "abc@gmail.com",
"phone": "024578963"
}
Это приложение NodeJS, и я использую couchdb-nano
. В целях сортировки (например, получение данных для разбивки на страницы) я создал индекс для вышеуказанных полей (name
, email
, phone
).
Новое поле с именем created_date
быловведенный в документы и все последние документы содержит created_date
, как показано ниже:
{
"_id": "6ed3d427045228dce9e3b38d111cb046",
"_rev": "1-952bddae5572fbf2b0ce4a165c19c98b",
"type": "USER",
"name": "ABC",
"email": "abc@gmail.com",
"phone": "024578963",
"created_date": 1570528394252
}
, так что все последние документы с определенного времени содержат created_date
, а старые документы не имеют поля created_date
в документе.
Когда я пытаюсь сортировать, как показано ниже:
const q = {
selector : {
type: { "$eq": "USER" },
},
fields : ['name', 'email', 'phone', 'created_date'],
limit: 100,
skip: 10,
sort : [{"created_date":"asc"}]
};
await prodresdb.find(q);
Я не смогу получить старые документы, которые не состоят из created_date
. Это связано с тем, что индекс created_date
не будет индексировать старые документы, поскольку в них нет поля created_date
.
Я уверен, что у кого-то еще есть эта проблема, и нужно выяснить ... Как преодолеть это? Есть ли способ CouchDB исправить это? Какова наилучшая практика для такого рода проблем.