我有一个集合,其中包括一个Time类型的字段。我需要能够按年或月年组合查询此集合。
我曾尝试在网站上使用索引创建工具,在条款中使用Year(data.expDate)
和Month(data.expDate)
之类的东西,但这不起作用。
这是我的收藏的架构:
type Expense {
_id: ID!
expAmount: Float!
expDate: Time!
expCategory: Category!
_ts: Long!
}
我需要能够列出特定年份或特定月份的费用,而不必在我的收藏中创建单独的月份和年份字段。
解决方案是根据计算字段创建索引,然后将这些字段绑定为术语,例如:
CreateIndex({
name: "expByYearMonth",
source: [{
class: Collection("Expense"),
fields: {
year:Query(Lambda("doc",Year(Select(["data","expDate"],Var("doc"))))),
month:Query(Lambda("doc",Month(Select(["data","expDate"],Var("doc")))))
}
}],
terms: [{ binding: "year" }, { binding: "month" }]
})
然后,我便可以按年,月进行搜索,并获得类似的结果:
Paginate( Match(Index('expByYearMonth'), [2019, 10]) )
>