收藏
回答

云开发的数据库操作符的setDifference的运算结果有问题

{ "_id": 1, "A": [ 1, 2 ], "B": [ 1, 2 ] }
{ "_id": 2, "A": [ 1, 2 ], "B": [ 2, 1, 2 ] }
{ "_id": 3, "A": [ 1, 2 ], "B": [ 1, 2, 3 ] }
{ "_id": 4, "A": [ 1, 2 ], "B": [ 3, 1 ] }
{ "_id": 5, "A": [ 1, 2 ], "B": [ ] }
{ "_id": 6, "A": [ 1, 2 ], "B": [ {}, [] ] }
{ "_id": 7, "A": [ ], "B": [ ] }
{ "_id": 8, "A": [ ], "B": [ 1 ] }

下面的代码使用 setDifference,找到只存在于 B 中的数字:

db.collection('test')
  .aggregate()
  .project({
    isBOnly: $.setDifference(['$B', '$A'])
  })
  .end()

{ "_id": 1, "isBOnly": [] }

{ "_id": 2, "isBOnly": [3] }

{ "_id": 3, "isBOnly": [3] }

{ "_id": 4, "isBOnly": [5] }

{ "_id": 5, "isBOnly": [] }

{ "_id": 6, "isBOnly": [{}, []] }

{ "_id": 7, "isBOnly": [] }

{ "_id": 8, "isBOnly": [1] }

测试结果和官方给出的结果不一样啊

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/command/aggregate/AggregateCommand.setDifference.html


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

3 个回答

  • 疯狂的小辣椒
    疯狂的小辣椒
    2020-12-02

    你好,文档返回的结果有误,我们处理下,应该是

    { "_id": 1, "isBOnly": [] }

    { "_id": 2, "isBOnly": [] }

    { "_id": 3, "isBOnly": [3] }

    { "_id": 4, "isBOnly": [3] }

    { "_id": 5, "isBOnly": [] }

    { "_id": 6, "isBOnly": [{}, []] }

    { "_id": 7, "isBOnly": [] }

    { "_id": 8, "isBOnly": [1] }


    2020-12-02
    有用
    回复
  • 梅西
    梅西
    2020-12-01

    这个是官方的示例,我也纳闷了,示例里没有5,怎么结果会有5,求解啊

    2020-12-01
    有用
    回复
  • 郑旭东
    郑旭东
    2020-11-30

    这...怎么A和B里都没有5,会输出5呢?多半是你自己代码写错了

    2020-11-30
    有用
    回复
登录 后发表内容
问题标签