如何通过FIWARE-Orion从MongoDB集合获取数据?是否需先创建实体?
关于Orion Context Broker直接读取MongoDB集合的问题
首先得明确:Orion Context Broker没办法直接读取你自定义的MongoDB集合(比如你的superUser)里的文档。原因很简单——Orion在MongoDB里存储实体的格式是严格遵循NGSI规范的,和你自己定义的superUser文档结构完全不一样。
接下来给你拆解两种可行的处理方式:
方式一:将现有MongoDB数据导入为Orion的NGSI实体
你需要把superUser里的文档转换成Orion能识别的NGSI实体格式,然后通过Orion的NGSI10 API(比如POST /v2/entities)创建实体。转换后的实体大概是这样的:
{ "id": "superUser:5ab1552823102117ecf77947", "type": "SuperUser", "email": { "value": "mail@hotmail.com", "type": "Text" }, "username": { "value": "abcd", "type": "Text" }, "password": { "value": "12345", "type": "Text" }, "firstName": { "value": "John", "type": "Text" }, "lastName": { "value": "Doe", "type": "Text" } }
创建完成后,你就可以用NGSI的GET API来检索了,比如执行这条命令:
GET /v2/entities/superUser:5ab1552823102117ecf77947
方式二:直接操作Orion的MongoDB后端(不推荐)
如果你实在不想转换实体,理论上可以直接连接Orion的MongoDB实例去查询superUser集合,但这完全违背了Orion的设计初衷——Orion的核心是提供标准化的上下文管理API,绕开API直接操作数据库会破坏数据一致性,而且后续Orion版本更新可能会改变数据库结构,导致你的查询失效。
总结一下:必须先把你的MongoDB文档转换成Orion的NGSI实体,才能通过Orion的GET API检索。直接读取自定义集合的方式不可行也不推荐。
内容的提问来源于stack exchange,提问作者zlash
相关产品推荐
相关产品推荐

