如何解决GraphQL MongoDB:实现基于游标的 $text $search 分页
在普通的光标分页中,我会根据 created
字段对文档进行过滤和排序,这非常简单。像这样:
// `cursor` is a string
const books = await this.BooksModel.find({
...(cursor ? { created: { $lt: new Date(cursor) } } : null),})
.sort({ created: -1 })
.limit(first)
与此同时,在实施搜索时,我(认为我)必须根据 textScore
元数据对文档进行排序和过滤,这些元数据可能有重复项。为了防止这种情况,我需要另一个字段来过滤,即 _id
。我想它会是这样的:
// `cursor` is { id: string,score: number }
const books = await this.BooksModel.aggregate(
[
{ $match: { _id: { $ne: ObjectId(cursor.id) },$text: { $search: 'sed' } } },{ $project: { title: 1,score: { $meta: 'textScore' } } },{ $match: { score: { $lt: cursor.score } } }
]
)
为了实现上面的例子,我需要光标不仅包含文档_id
(就像一个普通的分页)而且包含score
。我想光标(解码)的长度与正常的相比会很长。此外,光标现在包含一个对象而不仅仅是字符串,这对于像我这样的菜鸟来说非常奇怪。这真的是构建基于光标的搜索分页的方法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。