我试图在OrionCB中为现有实体的属性创建订阅。
URL http://130.206.80.120:1026/NGSI10/subscribeContext
方法 POST
集管 Content-Type:application / xml
体
<?xml version="1.0"?>
<subscribeContextRequest>
<entityIdList>
<entityId type="finesce_meteo" isPattern="false">
<id>finesce_meteo</id>
</entityId>
</entityIdList>
<attributeList>
<attribute>precip</attribute>
</attributeList>
<reference>http://localhost:5050/notify</reference>
<duration>P100Y</duration>
<notifyConditions>
<notifyCondition>
<type>ONCHANGE</type>
<condValueList>
<condValue>precip</condValue>
</condValueList>
</notifyCondition>
</notifyConditions>
<throttling>PT5S</throttling>
</subscribeContextRequest>
此操作检索200 OK标题代码,使用此正文:
<subscribeContextResponse>
<subscribeResponse>
<subscriptionId>54c5f049286043784451d08b</subscriptionId>
<duration>P100Y</duration>
<throttling>PT5S</throttling>
</subscribeResponse>
</subscribeContextResponse>
问题是当我试图检查它是否已创建时。当我试图列出订阅时,它不会出现。我正在使用这一行:
echo 'db.csubs.find().pretty()' | mongo orion
但如果我使用unsubscribeContextRequest删除此订阅,我会收到200 OK代码。它表明此订阅存在。
订阅存在的事实(因为它已创建和删除确定),并且在我列出订阅的任何时刻都不会出现,这种情况很少见。
拜托,有什么问题吗?
我尝试了这个天鹅座的过程开始了,同样的过程与天鹅座停止了,获得了相同的结果。
此致
答案 0 :(得分:0)
Mongo find()
命令返回与查询匹配的前20个结果,因此如果您有比此更多的订阅(例如,超过30个),则可能会发生您正在搜索的特定结果未被检索的情况。 (使用mongo交互式shell,您可以使用it
命令获取下一批20个结果,但不确定当mongo以非交互模式运行时这是如何工作的。)
因此,我建议您在查询中包含您要搜索的ID。例如,如果您在Orion请求中获得的ID是&#34; 54c90821286043500575eecf&#34;然后你可以使用:
echo 'db.csubs.find({_id: ObjectId("54c90821286043500575eecf")}).pretty()' | mongo orion
Morevoer,因为您只需要一个结果,您可以使用findOne()
并保存pretty()
的使用,即:
echo 'db.csubs.findOne({_id: ObjectId("54c90821286043500575eecf")})' | mongo orion