我正在通过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
}
)