如何更新OrionLD(MongoDB)中缓存的上下文并让其识别内容修改
OrionLD上下文更新解决方案
问题原理
OrionLD post-v0.8.1版本上线持久化上下文缓存功能后,所有已加载的远程JSON-LD上下文都会持久化存储在MongoDB中,默认不会随服务重启自动更新,因此修改源上下文文件后无法被自动识别。
可行方案
方案1:通过NGSI-LD上下文管理API刷新(推荐)
无需操作数据库,调用官方接口删除缓存的上下文即可:
- 对你的上下文URI做URL编码,例如
https://example.com/context.jsonld编码后为https%3A%2F%2Fexample.com%2Fcontext.jsonld - 执行删除缓存请求:
curl -X DELETE http://<你的OrionLD服务地址>:1026/ngsi-ld/v1/jsonldContexts/<编码后的上下文URI>
- 后续业务请求再次引用该上下文时,OrionLD会自动重新拉取最新的上下文内容完成更新。
可通过以下请求验证缓存状态:
curl http://<你的OrionLD服务地址>:1026/ngsi-ld/v1/jsonldContexts/<编码后的上下文URI>
方案2:手动删除MongoDB缓存记录
如果无法调用管理接口,可直接操作数据库删除缓存:
- 连接MongoDB服务,切换到OrionLD使用的数据库(默认库名为
orion) - 执行命令删除对应上下文的缓存记录,如需清空所有上下文缓存可执行:
db.csrcs.deleteMany({})
- 重启OrionLD服务,后续拉取的上下文即为最新版本。
注意事项
- 内嵌在请求体中的
@context内容不会进入持久化缓存,无需执行刷新操作 - 生产环境优先使用API操作,避免直接修改数据库引发的服务异常
内容的提问来源于stack exchange,提问作者ctc-enokida
相关产品推荐
相关产品推荐

