首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mule4中的复杂MongodbDB查询

Mule4中的复杂MongodbDB查询
EN

Stack Overflow用户
提问于 2019-09-20 17:02:49
回答 1查看 98关注 0票数 0

我正尝试在Mule中使用$in函数进行Mongodb查询,但是Mule说无效输入'$',预期的命名空间或NameIdentifier

有一个存储用户授权的集合

代码语言:javascript
复制
{
    "_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部分

代码语言:javascript
复制
db.getCollection('user').find({
    userID:"w12", "partnerDataAccess.partnerID": {$in : ["Part-2", "ALL"]}
    })

使用$in是因为有针对管理员的"ALL“设置

但是,当我尝试将find部分放入Mongodb连接器时,Mule在开发和运行时出现错误

硬编码:

代码语言:javascript
复制
        <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>

参数化

代码语言:javascript
复制
        <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):运行时:

代码语言:javascript
复制
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: 

我曾尝试删除$或使用反斜杠转义$,但都不起作用

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

EN

回答 1

Stack Overflow用户

发布于 2019-09-23 11:45:47

似乎找到了正确的方法

代码语言:javascript
复制
><![CDATA[#[{
    userID:"w12",
     "partnerDataAccess.partnerID": {"\$in" : ["Part-2", "ALL"]}
}]]]>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58025181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档