【发布时间】:2019-10-13 18:16:30
【问题描述】:
我的文档结构如下:
{
"_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 方法可以解决这个问题吗?此类问题的最佳做法是什么。
【问题讨论】:
-
对于没有
created_date的旧文档,你想做什么?你也想索引那些旧文档吗? -
@arunp9294 是的,我需要用
created_date索引那些旧文档。 -
您是否在某个地方为用户创建了 created_date?..如果您没有,我将修复的方法是编写一个视图以获取所有用户文档而不使用 created_date 并批量更新所有文档with with created_date(可能是数据库中可用的最旧 created_date)
-
created_date在数以千计的文档添加到数据库后添加
标签: node.js database sorting couchdb couchdb-nano