'How to add/update in array document with condition in mongoose

I need to perform the upsert operation. Below is my document structure. I want to update the spin_details array when there is a match found with package_id but with two conditions i.e. user_id & spin_details.package_id.

If there is a match with user_id but there is no match with spin_details.package_id then some package information has to be pushed into the spin_details array. If there is no match with user_id(only) itself then it should be able to insert a new document.

{
    "_id" : ObjectId("6234ffa6bd36b0e5a05ac913"),
    "user_id" : ObjectId("6230e5e2b1530b407cedeb1d"),
    "__v" : 0,
    "is_active" : true,
    "spin_details" : [ 
        {
            "package_id" : ObjectId("6230e5e2b1530b407cedeb9d"),
            "spin_count" : 10,
            "_id" : ObjectId("6234ffa6f390e1fafa8e215b")
        },
         {
            "package_id" : ObjectId("6230e5e2b1530b407cedeb2a"),
            "spin_count" : 25,
            "_id" : ObjectId("6234ffa6f390e1fafa8e409b")
        }
    ]
}

I can do this using multiple different queries and then based on the result value. How can I do this with a single mongoose query for this situation?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source