聚合投影查询报错:无法识别表达式'$$varientPricePoint.ppId'
错误原因与解决方法
错误原因
- 你的$filter条件写法不符合MongoDB聚合表达式规则。在
cond里,你把字段引用$$varientPricePoint.ppId当成了键名,而把$in操作符放在了值的位置。MongoDB要求聚合操作符(比如$in)必须作为外层结构,字段引用是操作符的参数,这种颠倒的写法导致系统无法识别表达式。
解决方法
- 调整
cond内的语法结构,将$in作为外层操作符,把$$varientPricePoint.ppId作为$in的第一个参数,目标匹配数组作为第二个参数。修正后的代码如下:
{ "pricepoint": { "$filter": { "input": "$OriginalPricePoints", "as": "varientPricePoint", "cond": { "$in": ["$$varientPricePoint.ppId", ["PP100"]] } } }, "_id": 0 }
这样调整后,MongoDB就能正确解析过滤条件,从OriginalPricePoints数组中筛选出ppId属于指定列表的元素。
内容的提问来源于stack exchange,提问作者Nitheesh SHASTHA
相关产品推荐
相关产品推荐

