1

MongoDB にこの奇妙なフィールドがあります。これは日付フィールドとして機能しますが、通常のテキスト フィールドです。

その値は次のようになります。

  • 2012 年 3 月 3 日
  • 2013 年 2 月 23 日

これらの値に対してクエリのような日付範囲を実行する機会はありますか? たとえば、2011 年 1 月 1 日から 2011 年 3 月 3 日までのすべてをクエリする必要があります。

$gte と $lte を試しましたが、ここではソートが機能しません。

ヒントをありがとう!

4

1 に答える 1

1

本当にやりたいことは、値を に更新することです。そうすればISODate()、$gt と $lt が適切に機能します。

function MonthToNr(month) {
    switch(month.toLowerCase()) {
        case 'jan': return '01';
        case 'feb': return '02';
        case 'mar': return '03';
        case 'apr': return '04';
        case 'may': return '05';
        case 'jun': return '06';
        case 'jul': return '07';
        case 'aug': return '08';
        case 'sep': return '09';
        case 'oct': return '10';
        case 'nov': return '11';
        case 'dec': return '12';
    }
}


db.test.find({date: {$exists: true}}).forEach(function(o) {
    var parts = o.date.split("-");
    o.date = ISODate(parts[2] + '-' + MonthToNr(parts[1]) + '-' + parts[0]);
    db.test.save(o);
})
于 2013-03-23T10:44:43.540 に答える