使用java脚本在Mongodb中传递动态值失败

时间:2013-08-23 11:04:06

标签: mongodb

我必须根据日期将数据从一个集合复制到另一个集合。这里的日期是动态地计算为昨天的日期并正常工作。

如果我将动态日期值作为/ $ 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)} );

是否有其他方法可以在不使用'$'符号的情况下传递动态值?

请分享您的宝贵意见

提前致谢...

Ramesh Kasi

1 个答案:

答案 0 :(得分:2)

现在你正在进行查询的方式,我很确定/$yesterday/被解释为匹配以“昨天”开头的字符串的正则表达式。更好的方法是使用$regex operator,以便传入一个包含您希望匹配的正则表达式的javascript变量。