如何比较mongodb字符串日期字段

时间:2015-05-31 00:28:14

标签: meteor

在meteor中我试图从mongo返回文件,其中purchase_date在今天的日期之后。这是在aslagle / reactive-table过滤器函数的上下文中,该函数已经知道要搜索的键

我正在使用:

import sys.process._

val f = (Seq("echo", "-n", "abc\t\n") #| "tr '\\t' 'T'").!!.trim
println(f)

val g = Seq("/bin/sh", "-c", "echo 'abc\t\n' | tr '\t' 'T'").!!.trim
println(g)

今天是2015年5月30日,该字段的格式是相同的字符串0/00/00格式,但我收回月份大于5而不是月份日和年份大于我传递日期的所有内容。它似乎只是检查第一个数字(月)然后返回超过5个月的所有内容。这也让我得到了像过去那样的7/20/00之类的东西,我需要所有带有日期的文件在今天的日期之后未来。

如何在mongo选择器内完成?

1 个答案:

答案 0 :(得分:0)

我建议您将基于字符串的日期迁移到实际日期。以下是如何创建迁移的示例(假设Transactions是集合的名称):

Meteor.startup(function() {
  var docs = Transactions.find({}, {fields: {purchase_date: 1}}).fetch();
  _.each(docs, function(doc) {
    var pd = new Date(doc.purchase_date);
    Transactions.update(doc._id, {$set: {purchase_date: pd}});
  });
});

如果您在server目录下的任何位置添加该代码,则应在服务器启动后立即进行迁移(确保在运行后删除此代码)。我还建议首先在数据库的备份上尝试这一点,以确保它能够满足您的需要。

或者,您可以使用migrations package

更新数据库后,您可以看到this example了解如何根据日期进行查询。