如何在mongo_dart中编写用户名或邮箱的OR查询校验
用mongo_dart实现用户名/邮箱的OR查询
你要做的是在数据库层面直接筛选出用户名匹配指定值或者邮箱匹配指定值的用户,不用全查回来再过滤对吧?这里的问题出在MongoDB操作符的写法和Dart的语法限制上:
为啥之前的代码不行?
- 你用的
"or"不是MongoDB的合法操作符,必须用$or才对。 - 在Dart里直接写
$or当map键(不带引号)会报错,因为Dart不允许变量名/标识符以$开头,得把它当成字符串键来写。
正确的写法
把$or用引号包起来作为map的键就行,两种写法都可以:
// 写法1:用双引号包裹$or List<dynamic> all = await coll2.find({ "$or": [ {"username": username}, {"email": email} ] }).toList(); // 写法2:用转义的单引号(如果习惯用单引号的话) List<dynamic> all = await coll2.find({ '\$or': [ {"username": username}, {"email": email} ] }).toList();
这样写既符合Dart的语法规则,又能让MongoDB正确执行OR逻辑的查询,直接返回符合条件的用户数据,不用自己再做过滤。
内容的提问来源于stack exchange,提问作者sushaanpatel
相关产品推荐
相关产品推荐

