Computer >> 컴퓨터 >  >> 프로그램 작성 >> MongoDB

특정 시간에만 레코드를 검색하는 MongoDB 쿼리?

<시간/>

이를 위해 $hour 연산자를 사용합니다. 먼저 필드 중 하나가 날짜인 문서로 컬렉션을 생성해 보겠습니다. −

> db.mongoDbSearchForHoursDemo.insertOne({"고객 이름":"래리","OrderDatetime":new ISODate("2019-01-31 09:45:50")});{ "승인됨":true, " insertId" :ObjectId("5cd6e8a86d78f205348bc62a")}> db.mongoDbSearchForHoursDemo.insertOne({"CustomerName":"Larry","OrderDatetime":new ISODate("2019-02-20):01":"승인":true, "insertedId":ObjectId("5cd6e8b86d78f205348bc62b")}> db.mongoDbSearchForHoursDemo.insertOne({"고객 이름":"래리","OrderDatetime":new ISODate(04:-10) 11")});{ "승인됨":true, "insertedId":ObjectId("5cd6e8e26d78f205348bc62c")}> db.mongoDbSearchForHoursDemo.insertOne({"고객 이름":"래리","201날짜 날짜"-("ISO1Datetime") 05-11 08:53:01")});{ "승인됨" :true, "insertedId" :ObjectId("5cd6e8f26d78f205348bc62d")}

다음은 find() 메서드를 사용하여 컬렉션의 모든 문서를 표시하는 쿼리입니다. -

> db.mongoDbSearchForHoursDemo.find().pretty();

이것은 다음과 같은 출력을 생성합니다 -

{ "_id" :ObjectId("5cd6e8a86d78f205348bc62a"), "CustomerName":"래리", "OrderDatetime":ISODate("2019-01-31T09:45:50Z")}{ "_id":ObjectId(" 5cd6e8b86d78f205348bc62b"), "고객 이름":"래리", "OrderDatetime":ISODate("2019-02-21T01:10:01Z")"Carry")}{ "_id":ObjectId("5cd6e8e25348f,"5cd6e8e25348f2 , "OrderDatetime":ISODate("2019-04-01T04:10:11Z")}{ "_id":ObjectId("5cd6e8f26d78f205348bc62d"), "CustomerName":"래리", "OrderDatetime"2:101 ISODate -11T08:53:01Z")}

다음은 특정 시간을 검색하는 쿼리입니다. 여기에서 특정 시간 8과 1에 대한 레코드를 가져옵니다. 출력은 두 시간(시간)에 대한 ID를 표시합니다. -

>db.mongoDbSearchForHoursDemo.aggregate([{$project:{SpecificHours:{$hour:"$OrderDatetime"}}},{$match:{SpecificHours:{"$in":[08,01]}} }]);

이것은 다음과 같은 출력을 생성합니다 -

{ "_id":ObjectId("5cd6e8b86d78f205348bc62b"), "SpecificHours":1 }{ "_id":ObjectId("5cd6e8f26d78f205348bc62d"), "SpecificHours">:8 }