Dart MongoDB驱动projection查询仅返回_id字段问题排查
问题根因
核心错误是投影配置里的字段名和集合实际存储的字段名大小写不匹配:
你代码里投影写的是LastName(首字母L大写),但目标查询字段是lastName(首字母l小写)。MongoDB对字段名大小写完全敏感,大小写不匹配的字段会被判定为不存在,投影规则对不存在的字段不会生效,也不会抛出显式错误,所以最终只会返回默认携带的_id字段。
移除selector参数没有效果,是因为问题和查询筛选条件无关,错误出在投影参数本身的字段拼写/大小写上。
修正方案
把投影里的字段名改成和集合存储完全一致的命名即可,修正后代码如下:
var v1 = await db.collection('persons').modernFind( selector: SelectorBuilder(), projection: {'firstName': 1, 'lastName': 1} ).toList();
如果不需要默认返回的_id字段,可以在投影配置里加'_id': 0显式排除该字段。
内容的提问来源于stack exchange,提问作者Tusshu
相关产品推荐
相关产品推荐

