[Fixed] Find a document by INC value in MongoDB

Issue

From my website client I am sending an API request to the backend Node.js server and finding a specific document by ID like so:

var ObjectID = require('mongodb').ObjectID;   

db.collection('users').find({"_id": new ObjectID(req.body._id)})

Where req.body._id equals the entire ID string, such as ‘5d0381ad681a2a3aa1dc5872’

However I would prefer to send only the INC (ever incrementing value) portion of the string as the argument: ‘c5872’

How should I find a specific document based on just the INC value? (I’m assuming the INC is unique)

Any help is greatly appreciated.

Solution

You can temporarily transform your _id in a string to be able to use a regular expression :

db.users.aggregate([
  {
    $addFields: { id: { $toString: '$_id' } }
  },
  {
    $match: { id: /c5872$/ }
  }
])

Leave a Reply

(*) Required, Your email will not be published