带"Find one and update document"连接器的 mule4:'$inc' 中以美元 ($) 为前缀的字段'$inc'无效,无法存储



我正在通过mule 4 api中的mongodb连接器v5.3.1访问cosmosdb3.2。

我已经在数据库中遵循收集:

{ "id": "range", 
  "from": 100, 
  "to": 1, 
  "used": 0 
}

我将基于ID =范围从此集合中获取数据。但是,同一时间我也想更新并获取更新的数据 - 以使用正确的数据检索支持多个同时命中。

搜索查询:

 %dw 2.0
 output application/json
 ---
 {
     "id" : "range"
 }

更新查询:

%dw 2.0
 output application/json
 ---
 { "$inc": {    
     "from": -1,
     "used": 1    
 }}

因此,连接器代码变为:

<mongo:find-one-and-update-document doc:name="Find one and update document" doc:id="f7fb0fe6-ae0c-4d82-8766-92d6e7081c0e" config-ref="MongoDB_Config" collectionName="test" returnNewDocument="true">
    <mongo:find-query ><![CDATA[#[vars.findQuery]]]></mongo:find-query>
    <mongo:content-to-update ><![CDATA[#[vars.updateQuery]]]></mongo:content-to-update>
</mongo:find-one-and-update-document>

预期有效载荷:

 {
     "id": "range",
     "from": 99,
     "to": 1,
     "used": 1
 }

但是,我认为"找到一个并更新文档"连接器无法接受更新功能" Inc"。它给出以下例外:

The dollar ($) prefixed field '$inc' in '$inc' is not valid for storage.

有人面临类似问题并有任何解决方案,请提供帮助。我认为MongoDB/cosmosdb中不存在序列支持。

谢谢Swati Jain

我没有解决mule连接器本身提到的问题的解决方案,但是,我能够用另一种方式来解决。

我使用命令findandModify使用执行总命令连接器来获得相同的结果:

db.runCommand(
   {
     findAndModify: "test",
     query: { "id" : "range" },
     update: { $inc : { "from" : -1, "used": 1 } },
     new: true
   }
 )

最新更新