Результат запроса MongoDB не соответствует ожидаемому с использованием Spring Boot - PullRequest
0 голосов
/ 07 мая 2020

Я столкнулся с проблемой, связанной с получением данных из коллекции MongoDB.

У меня есть следующая коллекция в базе данных MongoDB:

db.inventory.insertMany([
       { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] },
       { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },
       { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
])

У меня есть запрос ниже:

db.inventory.find( { dim_cm: { $gt: 25 } } )

Результат: { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] }

Однако я хочу, чтобы результат был:

{ item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 30 ] }

Возможно ли получить указанный результат. Я пробовал разные способы, но, к сожалению, не могу найти для этого решения.

1 Ответ

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

мы можем использовать $filter в aggregate конвейере для фильтрации массива

что-то вроде

db.collection.aggregate([
  {
    $match: { // to filter the documents 
      dim_cm: { $gt: 25 }
    }
  },
  {
    $project: {
      _id: 1,
      item: 1,
      qty: 1,
      tags: 1,
      dim_cm: {
        $filter: { // to filter the array
          input: "$dim_cm",
          as: "item",
          cond: {
            $gt: ["$$item", 25]
          }
        }
      }
    }
  }
])

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

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

...