3

我想知道 mongodb 中字段的特定子字符串是否可以分组,而不是按整个字段本身分组。

例如:我有一个包含值 abcde:123、abcde:456、abcde:789 的字段 PostId ......字段名称是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
})

我需要的是,有没有一种可能的方法来对正则表达式而不是整个字段进行分组

谢谢

4

1 回答 1

4

您可以在 $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
}
于 2013-10-01T12:03:34.120 回答