MongoDB使用$project投影含点输出字段报错,如何解决?
MongoDB $project投影含点字段的错误解决办法
问题原因
MongoDB会将字段名中的点(.)解析为嵌套字段的路径分隔符,当你在$project中直接定义带点的输出字段名时,它会误把"Id No."这类字符串当成嵌套路径(比如Id.No),从而抛出Field path not ends with .的错误。
解决方法
方法1:使用$addFields(或$set)配合$project
先通过$addFields创建带点的字段,再用$project保留需要的字段,彻底避免路径解析冲突:
[ { $addFields: { "Id No.": "$num", "Mobile No.": "$mob" } }, { $project: { "Id No.": 1, "Mobile No.": 1, _id: 0 // 可选:排除默认的_id字段 } } ]
方法2:在$project中用引号强制包裹字段名(适用于MongoDB 3.6+)
确保输出字段名被双引号完整包裹,明确告知MongoDB这是一个整体字段名而非嵌套路径:
[ { $project: { "_id": 0, "Id No.": "$num", "Mobile No.": "$mob" } } ]
内容的提问来源于stack exchange,提问作者code guard
相关产品推荐
相关产品推荐

