Я пытаюсь сделать запрос 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:
Я пытался удалить $ или избежать $ с помощью обратной косой черты, но он не работает
Я знаю, что мой запрос на самом деле не сложен, приветствуем любую помощь