0

日付に基づいて、あるコレクションから別のコレクションにデータをコピーする必要があります。ここで、日付は昨日の日付として動的に計算され、適切に機能します。

動的な日付の値を /$yesterday/ として mongo find メソッドに渡すと、取得に失敗しました。

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)} );

「$」記号を使用せずに動的な値を渡す他の方法はありますか?

貴重なご意見をお聞かせください

前もって感謝します...

ラメシュ・カシ

4

1 に答える 1

2

あなたが現在クエリを実行している方法は/$yesterday/、「yesterday」で始まる文字列に一致する正規表現として解釈されていると確信しています。より良いアプローチは、一致させたい正規表現を保持する JavaScript 変数を渡すことができるように、$regex演算子を使用することです。

于 2013-09-19T21:39:54.430 に答える