错误值需要mongoDB中的数组

错误值需要mongoDB中的数组,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我试图在聚合的内部$匹配条件中使用$。我将SegmentList作为文字数组,将Segment作为文字值。我试图在条件中匹配$,如下面的查询所示 db.collection.aggregate([ {'$match': { 'MaterialNumber': '867522' }}, {'$project':{ 'SegmentList': {'$literal':['A']}, 'Segment':{'$literal':'A'},

我试图在聚合的内部$匹配条件中使用$。我将SegmentList作为文字数组,将Segment作为文字值。我试图在条件中匹配$,如下面的查询所示

db.collection.aggregate([
{'$match': {
    'MaterialNumber': '867522'
}}, 
 {'$project':{
    'SegmentList': {'$literal':['A']},
           'Segment':{'$literal':'A'},
           'value':{'$literal':'B'},
       }
   },
       {'$match': {
    'Segment':{'$in':'$SegmentList'}
 }
 }

])
但是我犯了一个错误

assert: command failed: {
"ok" : 0,
"errmsg" : "bad query: BadValue: $in needs an array",
"code" : 16810
} : aggregate failed

我无法理解问题是什么

不确定您在这里想要实现什么,因为您正在做的是比较“A”是否在数组中,以及元素“A”是否始终为真

$match的常规形式仅接受值,而不接受字段引用

不需要使用$literal,您可以直接传递[]

您可以基于mongo版本使用以下查询之一

3.4及以下:

{'$match': {'Segment':{'$in':['A']}}
3.6您的用例不需要

{'$match': {'$expr':{'$in':['$Segment', ['A']]}}}