代码之家  ›  专栏  ›  技术社区  ›  Valeri

如何仅获取布尔值数组中没有“false”的文档?

  •  1
  • Valeri  · 技术社区  · 2 年前

    假设我有这些文件:

    [
        {
            _id: 132143124,
            orders: [true, false, false],
        },
        {
            _id: 3123,
            orders: [true, true, true],
        },
    ];
    

    如何仅获取订单数组中没有“false”的文档。

    2 回复  |  直到 2 年前
        1
  •  2
  •   Tom Slabbaert    2 年前

    您可以使用 $not $ne

    db.collection.find({
      orders: {$ne: false}
    })
    

    Mongo Playground

    同样的语法也适用于聚合管道: Mongo Playground Aggregation

        2
  •  0
  •   elsybilo    2 年前

    可以对数组使用筛选函数:

        const results = [
          {
            _id: 1,
            orders: [true, false, false],
          },
          {
            _id: 2,
            orders: [true, true, true],
          }
        ]
        
        const filtered_results = results.map(({orders, ...data}) => {
           return {
             orders: orders.filter((order)=>order === true), 
             ...data
            }
        })
        
        console.log(filtered_results)