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/被解释为匹配以“昨天”开头的字符串的正则表达式。更好的方法是使用$regex运算符,以便您可以传入一个包含您希望匹配的正则表达式的 javascript 变量。

于 2013-09-19T21:39:54.430 回答