2017-05-16 14 views
-2

日付の値にかかわらず、時刻の値が00:00:00のすべての日付を選択するにはどうすればよいですか?正規表現は私のために動作しません。以下のようなISOの日付フィールドのMongodbの正規表現

{ 
    "_id" : ObjectId("59115a92bbf6401d4455eb21"), 
    "name" : "sfdfsdfsf", 
    "create_date" : ISODate("2013-05-13T02:34:23.000Z"), 
} 

何か:

db.myCollection.find({"create_date": /*T00:00:00.000Z/ }) 
+0

私に投票の理由を教えてください。私はstackoverflowの解決策を見つけることができません。提供されたソリューションは私のためには機能しません。 downvoteの理由はありますか? – Shashank

+0

これも私のために働いていない:http://stackoverflow.com/questions/27412761/questing-embedded-documents-by-matching-dates-in-mongodb – Shashank

+0

これがあなたに合っているかどうかわからないが、これを行うことができる集計を使用 –

答えて

1

はあなたが初めての文字列に作成された日付を変換する必要があり、時間が00の場合:00:00:000を、その文書が含まれます。

db.test.aggregate([ 
    // Part 1: Project all fields and add timeCriteria field that contain only time(will be used to match 00:00:00:000 time) 
    { 
    $project: { 
     _id: 1, 
     name: "$name", 
     create_date: "$create_date", 
     timeCriteria: { 
     $dateToString: { 
      format: "%H:%M:%S:%L", 
      date: "$create_date" 
     } 
     } 
    } 
    }, 
    // Part 2: match the time 
    { 
    $match: { 
     timeCriteria: { 
     $eq: "00:00:00:000" 
     } 
    } 
    }, 
    // Part 3: re-project document, to exclude timeCriteria field. 
    { 
    $project: { 
     _id: 1, 
     name: "$name", 
     create_date: "$create_date" 
    } 
    } 
]);