Mongo-使用不同的正则表达式对文档进行分组



我有一个名为vacancy的集合,其中包含以下字段:

[{
"name": "Software Developer",
"published_at": "2022-08-31"
},
{
"name": "Tech Lead",
"published_at": "2022-08-31"
},
{
"name": "Team Lead",
"published_at": "2022-08-31"
},
{
"name": "Software Engineer",
"published_at": "2022-08-31"
}]

聚合查询会返回给我两个基于两个REGXe的组,这将验证字段名称中是否存在单词。

类似的东西:

[{
"_id": "Software",
"count": 2
},
{
"_id": "Lead",
"count": 2
}]

Query1

  • null组(全部采集1组(
  • 创建两个自定义组
  • 如果软件为0,则为第一个和1
  • 到第二个和1,如果Lead else为0

Playmongo

aggregate(
[{"$group": 
{"_id": null,
"Software": 
{"$sum": 
{"$cond": 
[{"$regexMatch": {"input": "$name", "regex": "Software"}}, 1, 0]}},
"Lead": 
{"$sum": 
{"$cond": 
[{"$regexMatch": {"input": "$name", "regex": "Lead"}}, 1, 0]}}}}])

如果您想要与示例中完全相同的输出,请尝试这样做,但可能第一个查询也可以。

Query2

  • 就像上面一样,但根变成了数组,这是不可执行的
  • 最后替换根以获得预期输出中的2个文档

Playmongo(你可以把鼠标放在每个阶段的末尾看看它做什么(

aggregate(
[{"$group": 
{"_id": null,
"Software": 
{"$sum": 
{"$cond": 
[{"$regexMatch": {"input": "$name", "regex": "Software"}}, 1, 0]}},
"Lead": 
{"$sum": 
{"$cond": 
[{"$regexMatch": {"input": "$name", "regex": "Lead"}}, 1, 0]}}}},
{"$unset": ["_id"]},
{"$project": {"array": {"$objectToArray": "$$ROOT"}}},
{"$unwind": "$array"}, {"$replaceRoot": {"newRoot": "$array"}},
{"$project": {"_id": "$k", "count": "$v"}}])

相关内容

  • 没有找到相关文章

最新更新