Фильтрация результатов поиска по последнему элементу встроенного массива - PullRequest
0 голосов
/ 07 мая 2020

В MongoDB как я могу выполнить поиск, который фильтруется предикатом, примененным к последнему элементу встроенного массива?

Я знаю, хочу ли я сделать это с первым, я мог бы сделать это:

db.inventory.find( { 'instock.0.qty': { $lte: 20 } } )

Как указано в документации .

Как мне написать аналоговый запрос, который смотрит на последний элемент, когда я не знаю точного размера встроенного массива?

1 Ответ

1 голос
/ 07 мая 2020

мы можем использовать $arrayElemAt и передать ему -1 в качестве второго аргумента, чтобы получить последний элемент в массиве

что-то вроде этого

db.collection.find({
  $expr: {
    $gt: [
      {
        $arrayElemAt: ["$instock.qty", -1]
      },
      10
    ]
  }
})

вы можете проверить это здесь Пн go Детская площадка

Надеюсь, это поможет

...