Arrays 阵列的匹配聚合未按预期工作Mongodb
我想找到输入参数之间存在的所有记录。 如果我传递的from和to参数相同,那么它应该找到一个完全匹配的参数 我有以下疑问:Arrays 阵列的匹配聚合未按预期工作Mongodb,arrays,mongodb,aggregation-framework,Arrays,Mongodb,Aggregation Framework,我想找到输入参数之间存在的所有记录。 如果我传递的from和to参数相同,那么它应该找到一个完全匹配的参数 我有以下疑问: db.runCommand( { aggregate: "mycoll", pipeline: [ { "$match": {"NUM": {$gte: 25, $lte:25 } } } ] } ) 收集数据: {"_id" : "1","NUM" : [21,24] } {"_id" :
db.runCommand(
{
aggregate: "mycoll",
pipeline: [
{
"$match": {"NUM": {$gte: 25, $lte:25 } }
}
]
}
)
收集数据:
{"_id" : "1","NUM" : [21,24] }
{"_id" : "2","NUM" : [25,29] }
{"_id" : "3","NUM" : [24,26,28] }
{"_id" : "2","NUM" : [25,29] }
{"_id" : "3","NUM" : [24,26,28] } //Why this record come No any 25 record exits
以上查询的输出:
{"_id" : "1","NUM" : [21,24] }
{"_id" : "2","NUM" : [25,29] }
{"_id" : "3","NUM" : [24,26,28] }
{"_id" : "2","NUM" : [25,29] }
{"_id" : "3","NUM" : [24,26,28] } //Why this record come No any 25 record exits
原因是您的条件分别应用于阵列。有一个大于
25
的项,还有一个小于25
的项,这就是得到整个数组的原因。要修复此问题,您需要操作员:
{
"$match": {
NUM: {
$elemMatch: {
$gte: 25,
$lte: 25
}
}
}
}
@KamleshKanazariya请看这里: