收藏
回答

聚合操作的match阶段,操作符nin后的数组达到100个后开始报错(数组由云数据库_id组成)

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 工具 wxcc7736ec5019fea6 ccenv-9gvdkox344529d91 2.11.2

相关代码如下:

getCustomerInfoWhenReachBottom: function () {
    let that = this
    const _ = db.command
    db.collection('customerInfo')
      .aggregate()
      .geoNear({
        distanceField: 'distance'// 输出的每个记录中 distance 即是与给定点的距离
        spherical: true,
        near: db.Geo.Point(Number(that.data.longitude), Number(that.data.latitude)),
        distanceMultiplier: 1 / 1000//将米换算为千米
        key: 'location'// 若只有 location 一个地理位置索引的字段,则不需填
        includeLocs: 'location'// 若只有 location 一个是地理位置,则不需填
      })
      .match({
        createTime: _.lt(that.data.refreshTimestamp),
        distance:_.gte(that.data.currentMaxDistance),
        _id: _.nin(that.data.customerInfoIdOnScreen)
      })
      .limit(10)
      .end()
      .then((data) => {
        that.data.currentMaxDistance=data.list[data.list.length-1].distance
        that.setData({
          arrayCustomerInfo: that.data.arrayCustomerInfo.concat(data.list)
        })
        for (let index = 0; index <data.list.length; index++) {
          that.data.customerInfoIdOnScreen.push(data.list[index]._id)
        }
      })
  },
其中that.data.customerInfoIdOnScreen是个数组,该数组由云数据库中自动生成的_id组成。
在数组that.data.customerInfoIdOnScreen的长度达到100之前,运行正常,长度达到100后,聚合操作失败。
请问如何解决?
最后一次编辑于  01-16
回答关注问题邀请回答
收藏

1 个回答

  • Mr.Zhao
    Mr.Zhao
    01-16

    学会提问,怎么个失败,提示啥

    01-16
    有用 1
    回复 37
    • Neveregret
      Neveregret
      01-16
      第一个聚合阶段是geoNear,其中distanceField为distance。数组长度达到100后,报错为Cannot read property 'distance' of undefined。实际上数据库中不止100条数据。
      01-16
      回复
    • Mr.Zhao
      Mr.Zhao
      01-16回复Neveregret
      问了你才说,哎
      01-16
      回复
    • Neveregret
      Neveregret
      01-16回复Mr.Zhao
      不好意思
      01-16
      回复
    • Mr.Zhao
      Mr.Zhao
      01-16回复Neveregret
      不知道如何复现
      01-16
      回复
    • Neveregret
      Neveregret
      01-16回复Mr.Zhao
      我没写明白吗
      01-16
      回复
    查看更多(32)
登录 后发表内容
问题标签