收藏
回答

_id使用nin()命令不能有效排除相应的数据

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 客户端 wx2028516fe97d85b4 2.7.4

- 当前 Bug 的表现(可附上截图)


一、不加查询条件时,可以检索出48条数据,集合里就只有48条数据,此处是正确的。


二、添加一个搜索条件:ptypeKey:_.nin(['laikj','wakj']),检索出来29条记录,这个也是正确的。


三、问题在这里:现在添加了_id的nin命令,没有生效,检索出来的数据还存在对应的两个_id的记录,还是29条记录,这里出错了



- 预期表现

_id的nin()命令能够有效排除数据。


- 复现路径

const collStep = db.collection('step')
return await collStep.where({
  // _id: _.nin(["5d27ee9578f8e29f4acb73d8","5d27ee9578f8e29f4acb73da"]),
  // ptypeKey:_.nin(['laikj','wakj'])
}).limit(100).orderBy('order', 'asc').get() //生产版使用

- 提供一个最简复现 Demo

在新集合zikupractice中执行nin过滤_id没有问题

个人感觉:可能与_id的版本有关系:

以前导入的数据生成的_id(24位数):(2019-7-1前)step集合

"5d27ee9578f8e29f4acb73d8","5d27ee9578f8e29f4acb73da"

现在导入的数据生成的_id(32位数):(2019-7-1后)zikupractice集合

"13dba11c5d2deb9b08fa709c1ec0255d","3e1ef27b5d2deb9b08f9297f46557e93"





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

1 个回答

  • 易
    2019-07-18

    下面例证一下新导入的zikupractice集合_id(32位数)nin()工作是正确的


    以下是图例:

    不使用nin()命令时,两条记录是可以被检索出来的,下图是正确的:

    注意看一下两条记录

    "13dba11c5d2deb9b08fa709c1ec0255d","3e1ef27b5d2deb9b08f9297f46557e93"




    使用nin()命令时,两条记录被排除掉了,_id使用nin()工作是正确的



    本题中所说的集合step中_id(24位数)使用nin()是无法正常工作的,确实存在这种情况,请小程序开发组给予重视和处理,谢谢!

    2019-07-18
    有用
    回复
登录 后发表内容