Сравнение элементов по заданному индексу в двух массивах в mongodb - PullRequest
0 голосов
/ 28 апреля 2020

Предположим, у меня есть коллекция mon go формы

test_collection:(
{
  _id:"test_id",
   "name":"abc",
   "array_1":[1,5,3,4],
   "array_2":[3,6,4,5]
},
{
   _id:"test_id_1",
   "name":"efg",
   "array_1":[5,6,7,8],
   "array_2":[8,9,10,11]
},
{
   _id:"test_id_2",
   "name":"mno",
   "array_1":[8,6,7,9],
   "array_2":[1,2,10,11]
})

Как мне написать запрос, который дает мне только те объекты из коллекции, где значение элемента с индексом 0 в массиве_1 меньше чем значение элемента с индексом 0 в array_2? Например, в этом случае запрос должен возвращать объекты с идентификатором test_id и test_id_1 .

1 Ответ

0 голосов
/ 28 апреля 2020

Это можно сделать с помощью оператора $ expr :

db.collection.find({
  $expr: {
    "$lt": [
      {$arrayElemAt: ["$array_1",0]},
      {$arrayElemAt: ["$array_2",0]}
    ]
  }
})

Детская площадка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...