我正在尝试编写脚本并从年份和特定月份添加的集合中获取数据。
并获得“名称”字段与我给定的正则表达式匹配的记录。
是否可以合计使用正则表达式组?像这样:
collection1.aggregate([
{"$match": {"$expr":{"$and":[{"$eq":[{"$year":"$updated_time"}, year]}, {"$eq":[{"$month":"$updated_time"}, month]}]}}},
{$group : {_id : {"Name": {"$regex": '^ABC', "$options": "i"} },count: { $sum: 1 }}
}]
或者哪种方法是最好的?我如何修改此查询以获取该时间范围内正则表达式匹配项的计数
答案 0 :(得分:2)
您可以在$regex
本身内部使用$match
,然后使用$count
获取匹配的文档数
collection1.aggregate([
{ "$match": {
"$expr": {
"$and": [
{ "$eq": [{ "$year": "$updated_time" }, year] },
{ "$eq": [{ "$month": "$updated_time" }, month] }
]
},
"Name": { "$regex": "^ABC", "$options": "i" }
}},
{ "$count": "count" }
])
或$group
也
collection1.aggregate([
{ "$match": {
"$expr": {
"$and": [
{ "$eq": [{ "$year": "$updated_time" }, year] },
{ "$eq": [{ "$month": "$updated_time" }, month] }
]
},
"Name": { "$regex": "^ABC", "$options": "i" }
}},
{ "$group": {
"_id": null,
"count": { "$sum": 1 }
}}
])