i have documents like this :
{
"_id": {
"$oid": "630656bfc64b4c94c5c5a614"
},
"collectionId": {
"$oid": "630654a37a2a8ea9e11b6803"
},
"__v": 0,
"createdAt": {
"$date": {
"$numberLong": "1661359804637"
}
},
"stats": [
{
"floor": 0.005,
"volume": 3.288569999999999,
"listedCount": 57,
"timestamp": {
"$date": {
"$numberLong": "1661359800000"
}
},
"_id": {
"$oid": "630656bc7a2a8ea9e11bc74b"
}
},
{
"floor": 0.0001,
"volume": 3.081616000000002,
"listedCount": 88,
"timestamp": {
"$date": {
"$numberLong": "1661360400000"
}
},
"_id": {
"$oid": "6306591e7a2a8ea9e11c2479"
}
},
],
"updatedAt": {
"$date": {
"$numberLong": "1661530019840"
}
}
}
Where stats is array of object and sometimes i can have 1000+ elements in that array. As you can see objects inside stats have a timestamp. Now i want to only return documents matching a specific condition like so :
{ 'stats.timestamp': { '$gt': '2022-08-22' } }
For now it's fine this will return all the documents that have stats.timestamp > 2022-08-22
But as i said my array of stat can be 1000+ elements and in the future it will grow more than 10000+
I was wondering if there is a way to trim array of stats and delete all the elements that don't match the condition.
{ 'stats.timestamp': { '$gt': '2022-08-22' } }
I want that the elements inside stats are only the one that have timestamp > 2022-08-22.
i want something without aggregate.