我想知道对于mongodb中某个字段的特定子字符串是否可以使用group by,而不是将整个字段本身分组。
例如: 我有一个字段PostId包含值abcde:123,abcde:456,abcde:789 .....字段名称是 PostId。 我可以只用字符串 abcde 而不是整个字段(abcde:123)进行分组。
我尝试了以下查询,它将整个postid字段分组。但我要求它只是按照postId中字符串的一部分进行分组。
db.noundata.aggregate({
$match: {
EntityId: 334,
SubProductId: 1,
AdjScore: {
$gt: 0.0
},
NounWord: 'foot'
}
}, {
$group: {
_id: {
PostId: "$PostId"
},
NounWeightage: {
$sum: 1
}
}
}, {
$sort: {
AdjScore: -1
}
}, {
$limit: 10
})
我需要的是,是否有可能通过正则表达式而不是整个字段进行分组
感谢名单
答案 0 :(得分:1)
您可以在$ project中的聚合框架中使用$substr来提取字符串所需的部分。你可以用它来分组。
一个例子:
> db.collection.aggregate({$project:{a_whole:'$a',a_substr:{$substr:['$a',2,3]}}})
{
"result" : [
{
"a_whole" : "abc:123",
"a_substr" : "c:1"
},
{
"a_whole" : "ab:123",
"a_substr" : ":12"
},
{
"a_whole" : "abcd:123",
"a_substr" : "cd:"
}
],
"ok" : 1
}