3

集計フレームワークを使用して日付範囲間のトランザクションをクエリするために、maven リポジトリ (以下の pom.xml のように) を介して mongodb Java ドライバーを使用しています。Java ドライバーは、mongo コンソールで検証しようとした次の $match を生成し、機能しないことがわかりました。

db.transactions.aggregate(
{ "$match" : 
    { 
        "created_at" : { "$gt" : { "$date" : "2001-04-12T12:00:00.000Z"} , "$lte" : { "$date" : "2020-04-13T12:00:00.000Z"}}
    }
}
)

$date ブロックを削除して ISOdate 関数と日付文字列に置き換えると、機能しているように見えます。Javaで機能しない理由を理解できませんでした($ match JSON - Eclipseからフェッチしてmongoコンソールで試してみましたが、それも機能しません。)

pom.xml
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>2.11.0</version>
</dependency>

$date が MongoDB v2.4.0 を使用して集計で機能しない理由を知っている人はいますか?

4

2 に答える 2

3

in のフィールドの""&$接頭辞を削除することで解決しました。、&の同じものを削除するため$date$match$date$gt$lte

次のように見えるように

db.transactions.aggregate(
{ "$match" : 
         { 
          'created_at': { 
                         $gt: "2001-04-12T12:00:00.000Z", 
                         $lt: "2020-04-13T12:00:00.000Z"
                        }
         }
});
于 2013-04-18T13:08:21.533 に答える