Pouchdb - 查找最近 30 天的文档
Pouchdb-find docs from the last 30 days
我正在尝试对我创建的 PouchDB 索引执行 $gte 查询。当应该有与该子句匹配的文档时,查询不会出错,但 returns 是一个空数组。这个想法是获取所有具有过去 30 天时间戳的文档。存储该值的 属性 不在顶层,它是 meta
属性 的一部分。例如
{
_id: "76e7f205-b8c3-4cc6-abfb-77c98ca3a0d4",
_rev: "1-47f49534aa364f5c654b9574fa085005",
...
meta: {
created: 1501841768486
createdBy: "user@example.com"
}
}
我使用以下方法成功创建了索引:
recordingsDB.createIndex({
name: 'recent',
ddoc: 'recent',
index: {
fields: ['meta.created']
}
});
然后我使用以下方式查询它:
let thirtyDaysAgo = moment(Date.now()).subtract(30, 'days').format('x');
//selector: { 'meta.created': { $gte: thirtyDaysAgo } },
return recordingsDB.find({
selector: { meta: { created: { $gte: thirtyDaysAgo } } },
sort: [{'meta.created': 'desc'}],
use_index: 'recent'
}).catch(function (err) {
console.log(err);
});
我已经尝试了两种语法风格来查询子属性,但都不起作用。查询实际上并没有失败或导致任何错误 - 它只是 returns 一个空数组,当我知道有文档应该匹配该查询时。
您需要将 thirtyDaysAgo
包裹在 Number()
中,因为它是一个字符串,而您的创建日期是一个数字。类型差异对 pouchdb-find 很重要,因为它使用与 couchdb 相同的基础索引标准,并且它们具有基于类型的 collation order.
我正在尝试对我创建的 PouchDB 索引执行 $gte 查询。当应该有与该子句匹配的文档时,查询不会出错,但 returns 是一个空数组。这个想法是获取所有具有过去 30 天时间戳的文档。存储该值的 属性 不在顶层,它是 meta
属性 的一部分。例如
{
_id: "76e7f205-b8c3-4cc6-abfb-77c98ca3a0d4",
_rev: "1-47f49534aa364f5c654b9574fa085005",
...
meta: {
created: 1501841768486
createdBy: "user@example.com"
}
}
我使用以下方法成功创建了索引:
recordingsDB.createIndex({
name: 'recent',
ddoc: 'recent',
index: {
fields: ['meta.created']
}
});
然后我使用以下方式查询它:
let thirtyDaysAgo = moment(Date.now()).subtract(30, 'days').format('x');
//selector: { 'meta.created': { $gte: thirtyDaysAgo } },
return recordingsDB.find({
selector: { meta: { created: { $gte: thirtyDaysAgo } } },
sort: [{'meta.created': 'desc'}],
use_index: 'recent'
}).catch(function (err) {
console.log(err);
});
我已经尝试了两种语法风格来查询子属性,但都不起作用。查询实际上并没有失败或导致任何错误 - 它只是 returns 一个空数组,当我知道有文档应该匹配该查询时。
您需要将 thirtyDaysAgo
包裹在 Number()
中,因为它是一个字符串,而您的创建日期是一个数字。类型差异对 pouchdb-find 很重要,因为它使用与 couchdb 相同的基础索引标准,并且它们具有基于类型的 collation order.