小程序云数据库的唯一性索引
数据库中建立Users数据,每个用户只能有1个,通常通过先查询无此用户再新建的方式。在极低概率下(可能是多端同时登录或者其他情况),会创建多于1个用户。此时为保证只能创建1个,需要在数据库管理端通过索引实现。
以_openid唯一为例,在数据库的“索引管理”中创建一个_openid的索引,并限定唯一即可。创建时,需要先删除旧的非唯一_openid索引。数据库中有重复的_openid数据也需要先删除。
查找重复_openid需要聚合。网上给出的代码(包括千问和google AI)都有错误,正确的如下:
db.collection('your_collection_name').aggregate()
.group({
_id: '$_openid', // 按 _openid 字段分组
count: $.sum(1) // 统计每组内的记录数量
})
.match({ // 第二步:筛选出数量大于 1 的分组
count: _.gt(1) // AI给出的代码这儿将_误作$
})
.end()