我正在尝试创建一个管道来计算有多少文档符合某些条件。不过,我看不到在条件中使用正则表达式的任何方法。这是我的管道的简化版本,带有注释:
db.Collection.aggregate([
// Pipeline before the issue
{'$group': {
'_id': {
'field': '$my_field', // Included for completeness
},
'first_count': {'$sum': { // We're going to count the number
'$cond': [ // of documents that have 'foo' in
{'$eq: ['$field_foo', 'foo']}, 1, 0 // $field_foo.
]
}},
'second_count': {'$sum': { // Here, I want to count the
'$cond': [ // Number of documents where
{'$regex': ['$field_bar', regex]}, 1, 0 // the value of 'bar' matches
] // the regex
}},
},
// Additional operations
])
我知道语法是错误的,但我希望这能传达我想要做的事情。有没有办法在 $cond 操作中执行这个匹配?或者,或者,我也愿意在管道中较早的地方进行匹配并将结果存储在文档中,这样我此时只需在布尔值上进行匹配。