Mongo: Пользовательский system.js в find(), например запрос
пытаясь написать запрос Mongo, который будет декодировать Base64 поле, закодированное в Base64, а затем выполнить простое «как» для декодированного значения. Я слежу за парой разных сообщений, а также за документами Mongo, но не могу понять правильный синтаксис. Я в основном хочу сделать такой запрос:
db.getCollection('my-collection').find (
{ base64Decode(edmDocumentId): /ni-billing-retro/ }
);
Где base64Decode() — это пользовательская функция, вставленная в system.js.
Сообщения:
----------------
Экспорт текста, хранящегося как Bindata в mongodb
Как запросить MongoDB с помощью «нравится»?
Что я сделал до сих пор:
- Я сохранил функцию base64Decode() в system.js и вижу эту функцию.... https://docs.mongodb.com/manual/tutorial/store-javascript-function-on-server/.
db.system.js.insertOne( {
_id: "base64Decode",
value : function (s) {
var e={},i,k,v=[],r='',w=String.fromCharCode,u=0;
var n=[[65,91],[97,123],[48,58],[43,44],[47,48]];
for(z in n){for(i=n[z][0];i<n[z][1];i++){v.push(w(i));}}
for(i=0;i<64;i++){e[v[i]]=i;}
function a(c){
if(c<128)r+=w(c);else if(c>=192)u=c;else r+=w(((u&31)<<6)+(c&63));
}
for(i=0;i<s.length;i+=72){
var b=0,c,x,l=0,o=s.substring(i,i+72);
for(x=0;x<o.length;x++){
c=e[o.charAt(x)];b=(b<<6)+c;l+=6;
while(l>=8)a((b>>>(l-=8))%256);
}
}
return r;
}
});
- Я пытался использовать $where, но безрезультатно... возвращает ReferenceError: edmDocumentId не является. Добавлен db.loadServerScripts(); чтобы исправить ошибку ссылки base64Decode().
db.loadServerScripts();
db.getCollection('rapid-document-meta').find (
{ $where: (base64Decode(edmDocumentId) == /ni-billing/) }
);
- Я пытался выполнить прямой поиск (), Неожиданный токен: Строка 2
db.getCollection('rapid-document-meta').find (
{ base64Decode(edmDocumentId): /ni-billing-retro/ }
);
- Пробовал следующее из вызова функции db.system.js в $where : ReferenceError: edDocumentId не определен, хотя edmDocumentId присутствует в каждой отдельной записи.
db.loadServerScripts();
db.getCollection('rapid-document-meta').mapReduce (
base64Decode(edDocumentId),
function() {},
{ "out": { "inline": 1 } }
);
У кого-нибудь есть пример запроса на поиск, который использует пользовательскую функцию из system.js??? Монго версии 4.0.8.