вернуть полный документ с массивом, содержащим удовлетворяющее условие в mongodb - PullRequest
1 голос
/ 04 апреля 2020

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

, как мой документ выглядит

  {
  engagement: {
    loves: [ 5e87a316457e874ce886356c,5e87a316457e874ce886356d, 5e87a316457e874ce886356e, 5e87a316457e874ce886356f],
    loveCount: 4,
  },
  _id: 5e87c097c9374e6628a499b
}

Теперь я хочу предоставить элемент массива loves и на основе этого он будет выдавать следующий результат

element: 5e87a316457e874ce886356d

result

  {
  engagement: {
    loves: [ 5e87a316457e874ce886356d],
    loveCount: 4,
  },
  _id: 5e87c097c9374e6628a499b
}

элемент: XYZAB C

результат

  {
  engagement: {
    loves: [],
    loveCount: 4,
  },
  _id: 5e87c097c9374e6628a499b
}

1 Ответ

1 голос
/ 04 апреля 2020

Вам нужен $ фильтр :

db.collection.aggregate([
    {
        $addFields: {
            "engagement.loves": {
                $filter: {
                    input: "$engagement.loves",
                    cond: {
                        $eq: [ "$$this", "5e87a316457e874ce886356d" ]
                    }
                }
            }
        }
    }
])

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

...