聚合操作的match阶段,操作符nin后的数组达到100个后开始报错(数组由云数据库_id组成)
发布于 5 年前 作者 maoqiang 6941 次浏览 来自 问答

相关代码如下:

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后,聚合操作失败。
请问如何解决?
1 回复

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

回到顶部