- 当前 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"
下面例证一下新导入的zikupractice集合_id(32位数)nin()工作是正确的
以下是图例:
不使用nin()命令时,两条记录是可以被检索出来的,下图是正确的:
注意看一下两条记录:
"13dba11c5d2deb9b08fa709c1ec0255d","3e1ef27b5d2deb9b08f9297f46557e93"
使用nin()命令时,两条记录被排除掉了,_id使用nin()工作是正确的:
本题中所说的集合step中_id(24位数)使用nin()是无法正常工作的,确实存在这种情况,请小程序开发组给予重视和处理,谢谢!