首页 > 解决方案 > 我怎样才能做这样的查询过滤器?

问题描述

我正在尝试过滤包含 的数组item.espaco == 'peitoral',就像这样。

我的架构:

Mercado.findById({ _id: '5d52e69b4b333234f0bbf1ba' }).where({ 'itens.item.espaco': { $eq: 'peitoral' } }

图片

标签: mongodbmongoose

解决方案


在 mongodb 3.4 或更高版本上您可以使用$filter$addFields

Mercado.aggregate([
  { $match: { _id: mongoose.Types.ObjectId("5d52e69b4b333234f0bbf1ba") }},
  { $addFields: {
      itens: {
        $filter: {
          input: "$itens",
          as: "iten",
          cond: { $eq: ["$$iten.item.espaco", "peitoral"] }
        }
      }
  }}
])

您可以使用返回替换项并使用聚合返回过滤器数据


推荐阅读