尽管报告成功,但不会出现订阅

时间:2015-01-26 09:12:32

标签: mongodb fiware fiware-orion fiware-cygnus

我试图在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代码。它表明此订阅存在。

订阅存在的事实(因为它已创建和删除确定),并且在我列出订阅的任何时刻都不会出现,这种情况很少见。

拜托,有什么问题吗?

我尝试了这个天鹅座的过程开始了,同样的过程与天鹅座停止了,获得了相同的结果。

此致

1 个答案:

答案 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