我正在尝试使用 $in 函数在 Mule 中进行 Mongodb 查询,但 mule 说 Invalid input '$', expected Namespace or 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",
}
流程将提交用户 ID 和合作伙伴 ID 并查询数据库以查看是否存在授权
当我从 Robo 3T 查询时,我会写这样的查询
例如用户 w12 和合作伙伴 Part-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:
我试过删除 $ 或用反斜杠转义 $ 但它不起作用
我知道我的查询实际上并不复杂,欢迎任何帮助