我有一个文档集合,其中的字段名称似乎带有一个点:
{ "prod_id": "123", "prod_cost (whole)": 49 "prod_cost (dec.)": 49 }
如何使用该字段有效地运行聚合管道?到目前为止,它报告空值,因为它将“)”视为prod_cost (dec.)的附加嵌套字段。
prod_cost (dec.)
aamkag611#
在MongoDB版本5中,MongoDB5.0增加了对字段名中使用($)和(.)的改进支持。有一些限制。更多细节请参见字段名注意事项。带有句点(.)和美元符号($)的字段名在大多数情况下,无法直接访问使用此类字段名存储的数据。您需要在访问这些字段的查询中使用帮助器方法,如$getField、$setField和$literal。
{ "$getField": "prod_cost (dec.)" }
Sample MongoPlayground访问对象中的字段,请参见“查询子单据中的字段”演示。
{ "$getField": { field: { $literal: "prod_cost (dec.)" }, input: "$productInfo" } }
Sample Mongo Playground (Nested object)
1条答案
按热度按时间aamkag611#
在MongoDB版本5中,
MongoDB5.0增加了对字段名中使用($)和(.)的改进支持。有一些限制。更多细节请参见字段名注意事项。
带有句点(.)和美元符号($)的字段名
在大多数情况下,无法直接访问使用此类字段名存储的数据。您需要在访问这些字段的查询中使用帮助器方法,如$getField、$setField和$literal。
Sample MongoPlayground
访问对象中的字段,请参见“查询子单据中的字段”演示。
Sample Mongo Playground (Nested object)