0

私のデータベースのサンプル:

{
    "_id": {
        "$oid": "50c97f4f6e46e4b31634934"
    },
    "index": "6633333",
    "uniq_name": "com.test.fix",
    "ad": "com.ad",
    "ad_delay_time": "43200000",
    "track_time": {
        "$date": "2012-12-13T07:10:06.056Z"
    }
}

私のデータベースは数百万で、このデータに対してクエリを実行したとき:

db.track.aggregate( [ 
{ $match: { track_time: { $gte: ISODate("2012-12-18T00:00:00.000Z") }}},
{ $group: { _id: { ads:  "$ad" },
            count: { $sum: 1} } }
])

別の広告の名前は表示されませんが、実際には広告にない桁数のカウントが表示されますが、これは ad_delay_time です。ad_delay_time のすべての値が次のように表示されます

"result" : [
    {
        "_id" : {
            "ads" : "43200000"
        },
        "count" : 2187735
    }
],
"ok" : 1

なぜこのようにクエリを実行するのかわかりません。また、1 日のデータをクエリする必要があるため、$gteまたは直接言及された日付スタンプを使用する必要があります。このクエリで私を助けてください

4

1 に答える 1

0

PHP で間違った関数を使用していたため、ad_delay_time で ad_delay_time のすべてのエントリと ads エントリを取得しています。これは、クエリを実行した後に見た私の初心者の間違いでした: db.track.find({ad: "43200000", track_time: { $gte: ISODate("2012-12-18T00:00:00.000Z") }}) .count() . 誠に申し訳ございません。

于 2012-12-20T06:45:19.367 に答える