Использование оператора подстроки в запросе соответствия mongodb

#mongodb

Вопрос:

Я пытаюсь выполнить запрос о

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

в mongodb.

я пытался использовать, как:

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

   ]
)
 

это возвращает мне ошибку. есть какие-либо предложения по поводу того, какой запрос мне следует использовать? Спасибо.

Ответ №1:

Вам не хватает $eq условия внутри выражения,

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

Игровая площадка

Комментарии:

1. привет, спасибо за ответ, я попробовал запрос, но он не возвращает результата. —- РЕДАКТИРОВАНИЕ —- он действительно что-то возвращает. он возвращается, если вы ставите соответствие перед сортировкой и ограничением. поэтому размещение очень важно. Огромное спасибо!