收藏
回答

如何过滤lookup输出数组(as)为空的数据?

通过lookup查询数据,返回结果中的输出数组(bookList)如何才能不返回为空的数据。

回答关注问题邀请回答
收藏

2 个回答

  • 神经蛙
    神经蛙
    04-28

    lookup后面可以继续match

    .project({

    “_id": 1,

    // 这里可以加上其他需要的字段

    // 将bookList长度计算出来

    "size": $.size("$bookList")

    }).match({

    "size": $.gt(0)

    }).end()

    04-28
    有用
    回复
  • Cjiang
    Cjiang
    2020-12-16

    你好,在then的回调里面处理试试:

    var a = [
      {
        "_id"4,
        "book""novel 1",
        "price"300,
        "quantity"20,
        "bookList": []
      },
      {
        "_id"5,
        "book""science 1",
        "price"20,
        "quantity"1,
        "bookList": [
          {
            "title""science 1",
            "author""author 3",
            "stock"30
          }
        ]
      }
    ]
    
    var b = []
    a.forEach((item)=>{ 
        if(item.bookList.length===0){
           return;
        }else{
             b.push(item)
        }
    })
    
    2020-12-16
    有用
    回复 1
    • 乔
      2020-12-17
      您好,我遇到类似问题,有一个单独条件,比如是books计合的author=author 3的数据,那么我在let author_val:'author 3'中声明,然后pipeline的match中写$.eq(['$author';'$$author_val']),这样会起到作用吗?返回的结果集,是否就没有第一条bookList为空的主表结果了?
      2020-12-17
      回复
登录 后发表内容
问题标签