Skip to content
Advertisement

Is new keyword is necessary with ObjectID in MongoDB Query

I was working on a Typescript web project that used MongoDB and ExpressJS. I used a MongoDB query to find and delete a document from MongoDB using the HTTP DELETE method. During the MongoDB query, I got mixed up with a term named new and ObjectID. Here are the code snippets:

//Without new Keyword
      const resData: DeleteWriteOpResultObject = await data
        .collection("posts")
        .deleteOne({
          _id: ObjectID(req.params.id),
        });


//With new keyword
  const resData: DeleteWriteOpResultObject = await data
    .collection("posts")
    .deleteOne({
      _id: new ObjectID(req.params.id),
    });

Both are working fine as I expected. But I want to know what’s the difference between these two. Is there any memory-related difference or something else?

While googling I got an article also. I am attaching the link here.

Advertisement

Answer

According to the official driver documentation, ObjectId is a class which means you need to use new to instantiate it.

However, looking at the actual implementation, it will allow itself to be called as a regular function, in which case it will return new ObjectId(...) (so it will instantiate itself automatically).

Advertisement