Using substring operator in match query mongodb

Viewed 29

I'm trying to achieve a query of

SELECT id FROM inventory WHERE LEFT(id,4) = "1234"

in mongodb.

i tried to use like:

db.inventory.aggregate(
   [
     {$match : { $substr: ["$id",0,4] : "1234"}},
     {
       $project:
          {
            id: 1,
            date:1
          }
     }

   ]
)

it returns me an error. any suggestions on what query should i use? thanks.

1 Answers

You are missing $eq condition inside expression,

db.inventory.aggregate([
  {
    $match: {
      $expr: {
        $eq: [{ $substr: ["$id", 0, 4] }, "1234"]
      }
    }
  },
  {
    $project: {
      id: 1,
      date:1
    }
  }
])

Playground

Related