我的应用程序目前面临一个挑战,在添加或更新项目后,重定向到列表页面时更改不会立即反映出来。我注意到引入 1000 毫秒的延迟似乎可以暂时解决问题,但这不是一个可持续的解决方案。
我怀疑问题出在写操作和Atlas Search索引更新之间的同步上。我探索过使用 Atlas API 和 MongoDB Node.js 驱动程序来检查索引状态,但到目前为止,它还没有提供可靠的解决方案。
你们中是否有人遇到过类似的问题,或者对如何确保写入操作仅在 Atlas Search 索引完成更新时完成有建议?我非常感谢您在处理这种情况时可能拥有的任何见解、替代方法或最佳实践。
预先感谢您的宝贵意见!
我之前遇到过类似的问题,我所做的是创建一个自定义函数来检查索引是否更新。此函数使用 $search 查询获取插入或更新的文档。
例如,假设我们插入一条新记录。我们希望确保它与搜索索引同步。为此,我们可以使用如下所示的聚合查询来检查插入的文档是否存在:
[{
$search: {
index: <<searchIndex>>,
compound: {
must: [
{
in: {
path: "_id",
value: <<objectiveId>>
}
}
]
}
}
}]
同样,对于更新操作,我们可以将更新的字段包含在查询中进行验证。对于删除操作,我们可以使用类似的查询,但确保不检索文档。