Сложный запрос MongodbDB в Mule4 - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь сделать запрос Mongodb в Mule с помощью функции $ in, но 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 и партнер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: 

Я пытался удалить $ или избежать $ с помощью обратной косой черты, но он не работает

Я знаю, что мой запрос на самом деле не сложен, приветствуем любую помощь

screenshot

1 Ответ

0 голосов
/ 23 сентября 2019

, кажется, нашел правильный путь

><![CDATA[#[{
    userID:"w12",
     "partnerDataAccess.partnerID": {"\$in" : ["Part-2", "ALL"]}
}]]]>
...