I had array of objects in each object had startDate , endDate, ownnerID, ownerType.
I am getting the documents by uisng this below statement
var yesterdayDate = new Date();
yesterdayDate.setDate(yesterdayDate.getDate() - 1);
var next30daysDate = new Date();
next30daysDate.setDate(next30daysDate.getDate() + 29);
const insurances = await Insurances.find({endDate: {$gte: yesterdayDate, $lte: next30daysDate}});
[
{
docIds: [ 6285c7ce9fb2940007e61ce2 ],
_id: 6285c7cd9fb2940007e61cde,
startDate: 2022-03-31T18:30:00.000Z,
endDate: 2022-09-28T18:30:00.000Z,
ownerId: 61de54e8ae38620006457674,
ownerType: 'vendor',
createdAt: 2022-05-19T04:30:06.040Z,
updatedAt: 2022-09-06T09:42:37.497Z,
__v: 0,
name: 'download'
},
{
docIds: [ 631edc3da1c7060007242fca ],
_id: 631edc3da1c7060007242fc2,
startDate: 2022-09-13T18:30:00.000Z,
endDate: 2022-09-27T18:30:00.000Z,
ownerId: 6156aeeb152a3040b82fbc50,
ownerType: 'vendor',
createdAt: 2022-09-12T07:14:05.616Z,
updatedAt: 2022-09-12T12:04:57.897Z,
__v: 0,
name: 'bid manager'
},
{
docIds: [ 631f203b71f6f042243bcb26 ],
_id: 631f203871f6f042243bcb1f,
startDate: 2022-09-13T06:30:00.000Z,
endDate: 2022-09-29T06:30:00.000Z,
name: 'Javascript Training',
ownerId: 6156aeeb152a3040b82fbc50,
ownerType: 'vendor',
createdAt: 2022-09-12T12:04:10.938Z,
updatedAt: 2022-09-12T12:04:11.557Z,
__v: 0
},
{
docIds: [ 631f203b71f6f042243bcb28 ],
_id: 631f203871f6f042243bcb20,
startDate: 2022-09-12T18:30:00.000Z,
endDate: 2022-09-27T18:30:00.000Z,
name: 'SP-UserAccounts-200622-1021',
ownerId: 6156aeeb152a3040b82fbc50,
ownerType: 'vendor',
createdAt: 2022-09-12T12:04:10.943Z,
updatedAt: 2022-09-12T12:04:47.312Z,
__v: 0
},
{
docIds: [ 632155e5488a188c34ba5473 ],
_id: 632155e1488a188c34ba546f,
startDate: 2022-09-13T06:30:00.000Z,
endDate: 2022-09-24T06:30:00.000Z,
name: 'bid-project-details',
ownerId: 6253c6a067a5b83c84855f99,
ownerType: 'vendor',
createdAt: 2022-09-14T04:17:41.082Z,
updatedAt: 2022-09-14T04:17:41.674Z,
__v: 0
},
{
docIds: [ 6321fe4317dfea0007e828fe ],
_id: 6321fe2217dfea0007e828c9,
startDate: 2022-09-14T00:00:00.000Z,
endDate: 2022-09-15T00:00:00.000Z,
ownerId: 5bca41cbe5a5c1808da49b1c,
ownerType: 'vendor',
createdAt: 2022-09-14T16:15:30.986Z,
updatedAt: 2022-09-14T16:16:03.604Z,
__v: 0
},
{
docIds: [ 6321ff3e17dfea0007e829dc ],
_id: 6321fe2217dfea0007e828c6,
startDate: 2022-09-15T00:00:00.000Z,
endDate: 2022-09-15T00:00:00.000Z,
ownerId: 5bca41cbe5a5c1808da49b1c,
ownerType: 'vendor',
createdAt: 2022-09-14T16:15:31.215Z,
updatedAt: 2022-09-14T16:20:14.721Z,
__v: 0
},
{
docIds: [ 6321fef84377f600061f7f43 ],
_id: 6321fe2217dfea0007e828c8,
startDate: 2022-09-14T00:00:00.000Z,
endDate: 2022-09-24T00:00:00.000Z,
ownerId: 5bca41cbe5a5c1808da49b1c,
ownerType: 'vendor',
createdAt: 2022-09-14T16:15:31.233Z,
updatedAt: 2022-09-14T16:19:04.341Z,
__v: 0
},
{
docIds: [ 6321ff5c17dfea0007e829f7 ],
_id: 6321fe2217dfea0007e828c7,
startDate: 2022-09-14T00:00:00.000Z,
endDate: 2022-09-15T00:00:00.000Z,
ownerId: 5bca41cbe5a5c1808da49b1c,
ownerType: 'vendor',
createdAt: 2022-09-14T16:15:31.298Z,
updatedAt: 2022-09-14T16:20:44.631Z,
__v: 0
}
]
I am getting the results like this. Here my concern is one owner has different insurances going to expire on different dates.
Now I have to pick only one document with recent endDate by using the ownerId.
How can I solve this issue ?
2
Answers
The sort function will
sort
you arrays with new to oldendDate
, andlimit
will return only single document with latestendDate
in an array.You want to take one value. Therefore, you can use findOne. With using sort(), we can achieve the data which has recent endDate.