$getField(动态取字段)

最后更新:2026-10-09

$getField(动态取字段)

$getField按字面字段名从文档中取值,字段名即使以$开头或含特殊字符也不会被当作字段路径解析。语法为{ $getField: { field: 字段名, input: 文档 } },input缺省为$$CURRENT。常用于动态字段名、字段名含特殊字符的文档等场景。字段不存在时返回null。相比直接写'$field',$getField更灵活但代码略长。

分类字面·变量·对象
MongoDB 版本5.0+
示例语言mongosh (Shell)

📝 语法

{ $getField: { field: <字段名>, input: <文档表达式> } }

⚙️ 参数

field要取的字段名字符串或解析为字符串的表达式。
input可选,目标文档,缺省为$$CURRENT。

返回值:字段的值;字段不存在或input为null时返回null

▶ 示例

请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):

// $getField:按字段名从当前文档取值
db.orders.aggregate([
  { $project: {
      price: { $getField: { field: 'price', input: '$$CURRENT' } }
  } }
])

运行结果:

{ '_id': 1, 'price': 199 }
{ '_id': 2, 'price': 59 }

📌 注意事项

更多实战案例即将上线,敬请期待。

📚 相关教程

❓ 常见问题

Q$getField和直接写$字段有什么区别?
A直接写会把点与$解析成路径,$getField按字面字段名查找,支持特殊字符与动态名称。
Q$getField能取含点的字段名吗?
A能,字段名按字面处理,不会拆成嵌套路径。
Q$getField的input不传会怎样?
A缺省为$$CURRENT,即当前文档。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏