错误值需要mongoDB中的数组
我试图在聚合的内部$匹配条件中使用$。我将SegmentList作为文字数组,将Segment作为文字值。我试图在条件中匹配$,如下面的查询所示错误值需要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'},
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']]}}}