0

特定の日付のMongoDBからの抽出を探しています。クエリを送信するTalendのコンポーネントを使用しているため、複数行のコードを使用できないという意味で制限があります。

find-methodで直接日付制限を行うことはできますか?

db.example.find({ ts: { $gt: lowdate} });

lowdateが、皆さんが理解できることを願っている何かの代わりに使用される場合。

どうもありがとう!

PS。mongodbの日付形式は、それが重要な場合、「2011年12月16日19:37:06」です。

---更新---私のMongoDBから:

、"ty": "auth"、 "ts":"2011年12月16日15:28:01"、

これは、タイムスタンプ(ts)の形式が文字列であることを示しています。正しい?

4

1 に答える 1

0

日付がその形式の文字列として保存されている場合、クエリを実行することはできません。これを修正するには、すべてのドキュメントをスキャンし、この文字列としての日付をタイムスタンプに変換するスクリプトをお気に入りの言語で作成することをお勧めします。「ts」フィールドを上書きするか、「ts_int」と呼ばれる新しいフィールドを作成することができます。

たとえば、PHPでは次のようにします。

<?php
$m = new Mongo();
$c = $m->mydbname->example;

foreach ( $c->find() as $item )
{
    $item['ts_int'] = strtotime( $item['ts'] );
    $c->update( $item );
}
?>
于 2012-04-17T09:30:32.427 に答える