2013-10-31 91 views
2

我的腳本有點問題。我無法在'$ where'的函數中傳遞一個參數(例子中的MYPARAMETER)。

你有想法幫助我嗎?謝謝。

var MYPARAMETER = "dqsd qsdqs &é&é"; 

MyCol.findOne({ 

    $where: function(MYPARAMETER) 
    { 
     var tab1="ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ!#$€%&'`(),;:/@.*[]\|"; 
     var tab2= "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn      "; 
     rep2=tab1.split(''); 
     rep=tab2.split(''); 
     parray=new Array(); 
     var i=-1; 
     while(rep2[++i]) 
     { 
      parray[rep2[i]]=rep[i] 
     } 
     var chaine = this.name.replace(/\s{1,}/g,"-"); 
     chaine = chaine.replace(/./g, function($0){return (parray[$0])?parray[$0]:$0 }); 
     chaine = chaine.replace(/\s/g,""); 


     return (chaine == MYPARAMETER); 
    } 
}, 
+0

您是否設法找到解決方案,除了直接在腳本中包含變量? –

回答

3

一個$where在服務器上執行,所以並不會訪問到在本地另一臺服務器上聲明的變量。 JavaScript應該作爲last resort generally in MongoDB使用,並且這似乎是另一種方式,並且執行很多非常耗時的工作。

您需要將函數構建爲字符串並直接包含該值。

0

這一個是我的作品,只要設法查詢存儲在一個變量字符串,然後Concat的查詢字符串中的變量,

VAR local_var = 42

VAR的查詢=「{ $其中:函數(){返回this.a == 「+ local_var +」}}」

db.test.find(查詢)

watch the reference exaple