Search code examples
javascriptnode.jsmongodbmongoosemongoose-schema

aggregate match returns null with $gte and $lt


I am using the following code to retrieve the data from mongodb. Somehow when I added the $match to the code it returns empty set. Without it I get my results fine so there is no any other error. What can be the error in $match . How can I fix it ?

This is the code in my API?

postSchemaModel.aggregate([{
            "$geoNear": {
                "near": { "type": "Point", "coordinates": [parseFloat(long), parseFloat(lat), ] },
                "distanceField": "dist.calculated",
                "maxDistance": parseInt(maxDistance),
                "includeLocs": "dist.location",
                "spherical": true
            }
        },
        // mactchString,
        {
            "$match": {
                "createdAt": {
                    "$gte": '2020-07-15 23:54:38.673665',
                    "$lt": '2020-06-15 23:54:38.673665'
                }
            }
        },
        { "$limit": limit },
        { "$skip": startIndex },
        { "$sort": { "createdAt": -1 } },
        {
            "$lookup": {
                "from": userSchemaModel.collection.name,
                "localField": "user_id",
                "foreignField": "_id",
                "as": "user_id"
            }
        },
        {
            "$project": {
                "post_data": 1,
                "likes": 1,
                "commentsCount": 1,
                "post_img": 1,
                "isUserLiked": 1,
                "usersLiked": 1,
                'exp_date': 1,
                "has_img": 1,
                "user_id": {
                    "img": "$user_id.img",
                    "_id": "$user_id._id",
                    "user_name": "$user_id.user_name",
                    "bday": "$user_id.bday",
                    "imagesource": "$user_id.imagesource",
                    "fb_url": "$user_id.fb_url",
                },
                "typology": 1,
                "geometry": 1,
                "category": 1,
                "created": 1,
                "createdAt": 1,
                "updatedAt": 1,
            }
        },
    ]).then(async function(posts) {
        //some code here
        }
    });

The following is a sample post from mongodb enter image description here

What can be the error here. How can I fix it ?


Solution

  • Wrap the date field in new Date() similar to this

    "$match": {
      "createdAt": {
        "$gte": new Date('2020-07-15T23:54:38.673Z'),
        "$lt": new Date('2020-06-15T23:54:38.673Z')
       }
    }
    

    Check this Q & A.