Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于计算mongodb中主字符串中子字符串出现次数的聚合_Mongodb_Aggregation_Studio3t - Fatal编程技术网

用于计算mongodb中主字符串中子字符串出现次数的聚合

用于计算mongodb中主字符串中子字符串出现次数的聚合,mongodb,aggregation,studio3t,Mongodb,Aggregation,Studio3t,我是MongoDB的新手,可能是一个noob问题 我想计算消息字段中重复“lupoK”的次数,即“message”:“第一个lupoK lupoK”使用MongoDB中的聚合,我使用的是studio3t接口 我的文件结构是— { "_id" : ObjectId("5df9c780b05196da93be262b"), "id" : "61a4c53a-aa99-4336-ab4f-07bb7f618889", "time" : "00:00:45", "

我是MongoDB的新手,可能是一个noob问题

我想计算消息字段中重复“lupoK”的次数,即“message”:“第一个lupoK lupoK”使用MongoDB中的聚合,我使用的是studio3t接口

我的文件结构是—

{ 
    "_id" : ObjectId("5df9c780b05196da93be262b"), 
    "id" : "61a4c53a-aa99-4336-ab4f-07bb7f618889", 
    "time" : "00:00:45", 
    "username" : "siul", 
    "message" : "***first lupoK lupoK***", 
    "emoticon_place" : [
        {
            "_id" : "128428", 
            "begin" : NumberInt(6), 
            "end" : NumberInt(10)
        }
    ], 
    "fragments" : [
        {
            "text" : "first "
        }, 
        {
            "emoticon" : {
                "emoticon_id" : "128428", 
                "emoticon_set_id" : ""
            }, 
            "text" : "***lupoK***"
        },
        {
            "emoticon" : {
                "emoticon_id" : "128428", 
                "emoticon_set_id" : ""
            }, 
            "text" : "***lupoK***"
        }
    ]
}
提前感谢

这在mongo shell中起作用(假设
消息
字段是字符串并且存在):


注:

$split操作根据分隔符分割消息字符串-在本例中,分隔符为“lupoK”。分割返回一个由“lupoK”分隔的令牌数组。因此,令牌数减去1,给出了使用“lupoK”的次数,“lupoK”的出现次数

使用以下示例消息字符串检查结果:

"***first lupoK lupoK***"
"lupoKlupoK"
" lupoK lupoK "
""
"lupoKlupoKlupoK"
"lupoK"
"HELLO * lupoK* WORLD"
"HELLO WORLD"
"***first lupoK lupoKlupoK lupoK***lupoK *** last lupoK."
例如,某些字符串的标记:

"***first lupoK lupoK***"
"lupoKlupoK"
" lupoK lupoK "
""
"lupoKlupoKlupoK"
"lupoK"
"HELLO * lupoK* WORLD"
"HELLO WORLD"
"***first lupoK lupoKlupoK lupoK***lupoK *** last lupoK."
  • “***first lupoK lupoK***”
    生成这三个令牌:
    [“***first”、“,”***“]
  • “HELLO*lupoK*WORLD”
    有以下两个标记:
    [“HELLO*”,“*WORLD”]
  • “***first lupoK lupoK lupoK***lupoK***last lupoK.”
    有七个标记:
    [“***first”、“、”、“、”、“***”和“***last”、“]

请您详细说明一下,因为我无法理解您所做的一切。我正在尝试这个-{$group:{{u id:$\u id],片段:{“$text”:“$text”},总计:{“$sum”:1}}}非常感谢您的解决方案。这对我的问题陈述很有帮助:)我在答案中添加了一些注释。希望有帮助。另一种方法是:计算包含fileld“text”和“lupoK”的“fragments”数组子文档元素。;这可以转换为聚合。