2013-08-23 50 views
0

我必須根據日期將數據從一個集合複製到另一個集合。這裏的日期按照昨天的日期進行動態計算並正常運行。在Mongodb中使用java腳本傳遞動態值失敗

如果我將動態日期值作爲/ $ yesterday//傳遞給mongo查找方法,則其失敗。

假設data_timestamp格式爲2013-08-20 17:04:40.633並試圖通過類似查詢得到結果。

樣品JS代碼:

db=db.getSiblingDB('masterdb') 

$today = new Date(); 

$yesterday = new Date($today); 

$yesterday.setDate($today.getDate() - 1); 

var $dd = $yesterday.getDate(); 

var $mm = $yesterday.getMonth()+1; 

var $yyyy = $yesterday.getFullYear(); 

if($dd<10){$dd='0'+dd} if($mm<10){$mm='0'+$mm} $yesterday = $yyyy+'-'+$mm+'-'+$dd; 

db.mastercollection.find({ "data_timestamp": /$yesterday/ }).forEach(function(x){db.newcollection.insert(x)}); 

是任何其他的方式來傳遞動態值,而不使用 '$' 符號?

請分享您的寶貴意見提前

謝謝...

拉梅什卡絲

回答

2

你現在正在做您的查詢的方式,我敢肯定,/$yesterday/被解釋爲正則表達式匹配以「昨天」開頭的字符串。更好的方法是使用$regex operator,這樣就可以傳入一個JavaScript變量,該變量包含希望匹配的正則表達式。