收藏
回答

云函数查询数组返回子集的AggregateCommand.filter使用问题?

现在有两个问题:

1、使用AggregateCommand.filter时,如图2中查询的条件只满足一条数据里的一个数组里的值,而图1中返回的是两条(如图1中list的长度),这样相当于数据库有几条数据,返回的list里就会有多少条,而且如图1中 list [0] . lotteryList 里是没有数据(因为没有匹配),既然没有匹配的为什么还要返回这样的空数据呢?

问题 2、对于问题1中的情况可不可以在使用AggregateCommand.filter前先根据openid将数据范围缩小到一条数据里,再查出该条数据里符合要求的数组的子集,我试过,好像不能和where同时用,而像问题1那样查出来许多空的再去遍历剔除,这样的销号太大。

总结起来就是一个,我想获取某条数据里数组中符合条件的子集。

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

1 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2019-12-13

    好好看看project和filter的文档,尤其是project的意思

    db.collection('xxxx').aggregate()

    .match({

        'lotteryList.lotteryid':22...23

        'lotteryList.used': false

    })

    .project({

        lotteryList: 1

    })

    .end()

    2019-12-13
    赞同
    回复 1
    • youจุ๊บ
      youจุ๊บ
      2019-12-13
      感谢提醒,使用你的例子后我再改了一下,可以完美运行了
      2019-12-13
      回复
登录 后发表内容
问题标签