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

MongoDB에서 기간이 가장 긴 객체를 쿼리하는 방법은 무엇입니까?

<시간/>

문서로 컬렉션을 만들자 −

> db.demo344.insertOne({"startDate":"2020-02-24 10:50:00", "endDate":"2020-02-24 11:50:00"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e53f52cf8647eb59e5620aa")
}
> db.demo344.insertOne({"startDate":"2020-02-24 08:00:00", "endDate":"2020-02-24 11:50:50"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e53f53df8647eb59e5620ab")
}

find() 메서드를 사용하여 컬렉션의 모든 문서 표시 -

> db.demo344.find();

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

{ "_id" : ObjectId("5e53f52cf8647eb59e5620aa"), "startDate" : "2020-02-24 10:50:00", "endDate" : "2020-02-24 11:50:00" }
{ "_id" : ObjectId("5e53f53df8647eb59e5620ab"), "startDate" : "2020-02-24 08:00:00", "endDate" : "2020-02-24 11:50:50" }

다음은 가장 긴 기간을 가진 객체를 쿼리하는 방법입니다 -

> db.demo344.aggregate([
...    { $addFields: {
...       longestTime: { $subtract: [ { $toDate: "$endDate" }, { $toDate: "$startDate" } ] }
...    } },
... { $sort: { longestTime: -1 } },
... { $limit: 1 }
... ])

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

{ "_id" : ObjectId("5e53f53df8647eb59e5620ab"), "startDate" : "2020-02-24 08:00:00", "endDate" : "2020-02-24 11:50:50", "longestTime" : NumberLong(13850000) }