0

我正在尝试使用 $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: 

我试过删除 $ 或用反斜杠转义 $ 但它不起作用

我知道我的查询实际上并不复杂,欢迎任何帮助

截屏

4

1 回答 1

0

似乎找到了正确的方法

><![CDATA[#[{
    userID:"w12",
     "partnerDataAccess.partnerID": {"\$in" : ["Part-2", "ALL"]}
}]]]>
于 2019-09-23T03:45:46.500 回答