我必须根据日期将数据从一个集合复制到另一个集合。这里的日期是动态地计算为昨天的日期并正常工作。
如果我将动态日期值作为/ $ 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
答案 0 :(得分:2)
现在你正在进行查询的方式,我很确定/$yesterday/
被解释为匹配以“昨天”开头的字符串的正则表达式。更好的方法是使用$regex
operator,以便传入一个包含您希望匹配的正则表达式的javascript变量。