我正尝试在Mule中使用$in函数进行Mongodb查询,但是Mule说无效输入'$',预期的命名空间或NameIdentifier
有一个存储用户授权的集合
{
"_id" : ObjectId("584a0dea073d4c3e976140a9"),
"partnerDataAccess" : [
{
"factoryID" : "Fac-1",
"partnerID" : "Part-1"
}
],
"userID" : "z12",
}
{
"_id" : ObjectId("584f5eba073d4c3e976140ab"),
"partnerDataAccess" : [
{
"factoryID" : "Fac-1",
"partnerID" : "Part-2"
},
{
"factoryID" : "Fac-2",
"partnerID" : "Part-2"
}
],
"userID" : "w12",
}该流将提交userID和partnerID,并查询数据库以查看是否存在授权
当我从Robo 3T查询时,我编写了这样的查询
例如,用户w12和合作伙伴第2部分
db.getCollection('user').find({
userID:"w12", "partnerDataAccess.partnerID": {$in : ["Part-2", "ALL"]}
})使用$in是因为有针对管理员的"ALL“设置
但是,当我尝试将find部分放入Mongodb连接器时,Mule在开发和运行时出现错误
硬编码:
<mongo:find-one-document collectionName="user" doc:name="Find one document" doc:id="a03a6689-6b9d-473c-b8a6-3b8d1e989e38" config-ref="MongoDB_Config">
<mongo:find-query ><![CDATA[#[{
userID:"w12",
"partnerDataAccess.partnerID": {$in : ["Part-2", "ALL"]}
}]]]></mongo:find-query>
</mongo:find-one-document>参数化
<mongo:find-one-document collectionName="user" doc:name="Find one document" doc:id="a03a6689-6b9d-473c-b8a6-3b8d1e989e38" config-ref="MongoDB_Config">
<mongo:find-query ><![CDATA[#[{
userID: payload.User,
"partnerDataAccess.partnerID": {$in : [ payload.partner, "ALL"]}
}]]]></mongo:find-query>
</mongo:find-one-document>错误:
开发期间:Invalid input '$', expected } or ~ or , (line 3, column 38):运行时:
Message : "Script '{
userID:"w12",
"partnerDataAccess.partnerID": {$in : ["Part-2", "ALL"]}
} ' has errors:
Invalid input '$', expected Namespace or NameIdentifier (line 3, column 38):
at 3 : 3" evaluating expression: 我曾尝试删除$或使用反斜杠转义$,但都不起作用
我知道我的查询实际上并不复杂,欢迎任何帮助

发布于 2019-09-23 11:45:47
似乎找到了正确的方法
><![CDATA[#[{
userID:"w12",
"partnerDataAccess.partnerID": {"\$in" : ["Part-2", "ALL"]}
}]]]>https://stackoverflow.com/questions/58025181
复制相似问题