1

ユーザーのコレクションがあり、ユーザーには、以下に示すように ISODate である meta.create_date フィールドがあります。過去 N 日間に作成されたユーザーの数を数えようとしています。データベースには次のものがあります。

{
    "_id" : ObjectId("51e61fa16803fa40130a0581"),
    "meta" : {
        "create_date" : ISODate("2013-07-17T04:37:53.355Z")
    }
}

私のPHPコード:

$daysAgo = new MongoDate(date('c', strtotime('-7 days')));

$query = array(
    'meta.create_date' => array(
        '$gte' => $daysAgo,

    )
);

$result = $this->db->users->count($query);

また、「$gte」と「$lte」を使用して範囲を指定しようとしましたが、ここで $lte => 今日です。

ただし、結果は 0 として返されます。では、ここで何が起こっているのでしょうか。

4

1 に答える 1

3

MongoDate() には int time() がかかります。そのため、PHP の date() をコンストラクターに渡しても機能しません。これは適切な方法です:

$daysAgo = new MongoDate(strtotime('-7 days'));
于 2013-07-18T01:13:47.490 に答える