如何通过属性大小未达到特定数字或在Mongoose中为空或null的值获取对象

如何通过属性大小未达到特定数字或在Mongoose中为空或null的值获取对象,mongoose,Mongoose,我有一个属性为bvn的mongoose模式,bvn值的默认长度为11,我想查询该模式以获取具有坏bvn的对象,这包括 bvn的为空 bvn的空字符串 bvn的值小于或大于11 我尝试通过以下方式实现这一点: await this.find({ 'bvn': { '$exists': true }, '$expr': { 'ne': [ { '$strLenCP': '$bvn' }, 11 ] } }).exec() 但我得到了一个错误: MongoError:

我有一个属性为
bvn
的mongoose模式,
bvn
值的默认长度为11,我想查询该模式以获取具有坏
bvn
的对象,这包括

  • bvn的
    为空
  • bvn的
    空字符串
  • bvn的值小于或大于11
  • 我尝试通过以下方式实现这一点:

    await this.find({
          'bvn': { '$exists': true },
          '$expr': { 'ne': [ { '$strLenCP': '$bvn' }, 11 ] }
        }).exec()
    
    但我得到了一个错误:

    MongoError:$strLenCP需要字符串参数,找到:null


    如何实现变差
    bvn的
    ,我做错了什么?我能用更少的代码实现吗?

    是一个无效值为空的字符串吗?如果是这样的话,这应该适合您:

    db.collection.find({
      $or: [
        {bvn: {$exists: false}},
        {bvn: ""},
        {bvn: {$gt: 11}},
        {bvn: {$lt: 11}},
      ]
    });