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
Php mongoDb查询应该是什么来查找出现的次数?_Php_Mongodb - Fatal编程技术网

Php mongoDb查询应该是什么来查找出现的次数?

Php mongoDb查询应该是什么来查找出现的次数?,php,mongodb,Php,Mongodb,收集中的样本记录 文件1 文件2 使用PHP存储, 我想查找时间介于1450787307和1450787615之间的记录数 答复: apple=5 batman=3 该怎么办 我执行了这个命令 { aggregate : "hashtags", pipeline: [ {$match:{"time":{$gte:NumberInt(1450787307), $lte:NumberInt(1450787615)}}}, {$unwind:"$time"}, {$match:{"

收集中的样本记录

文件1

文件2

使用PHP存储, 我想查找时间介于1450787307和1450787615之间的记录数

答复:

apple=5
batman=3 
该怎么办

我执行了这个命令

{
aggregate : "hashtags",       
pipeline:

[
{$match:{"time":{$gte:NumberInt(1450787307), $lte:NumberInt(1450787615)}}},
{$unwind:"$time"},
{$match:{"time":{$gte:NumberInt(1450787307), $lte:NumberInt(1450787615)}}},
{$group:{"_id":"$word","count":{$sum:1}}}
]

}
这就产生了这个结果

Response from server:
{
   "result": [

  ],
   "ok": 1 
}
这将首先为您提供一个光标,其中包含符合给定时间范围的所有文档。一旦你有了它,你就可以遍历游标并打印出名称和一些循环逻辑来查找每一个事件的发生次数。我只是简单地使用了mongodb,因此可能有一种更有效的方法来实现这一点

参考:

这将首先为您提供一个光标,其中包含符合给定时间范围的所有文档。一旦你有了它,你就可以遍历游标并打印出名称和一些循环逻辑来查找每一个事件的发生次数。我只是简单地使用了mongodb,因此可能有一种更有效的方法来实现这一点

参考:

由于您使用的是较旧版本的mongoDB,因此无法利用3.2中引入的功能

您必须按以下方式进行汇总:

db.collection.aggregate([
{$match:{"time":{$gte:NumberInt(1450787307), $lte:NumberInt(1450787615)}}},
{$unwind:"$time"},
{$match:{"time":{$gte:NumberInt(1450787307), $lte:NumberInt(1450787615)}}},
{$group:{"_id":"$word","count":{$sum:1}}}
])
翻译成PHP

在版本3.2中,您可以使用和的组合来实现相同的结果,并且操作成本更低

db.collection.aggregate([
{$match:{"time":{$gte:NumberInt(1450787307), 
                 $lte:NumberInt(1450787615)}}},
{$project:{"_id":0,"word":1,
           "count":{$size:{$filter:
                               {"input":"$time",
                                "as":"t",
                                "cond":{$and:[
                                     {$gte:["$$t",NumberInt(1450787307)]},
                                     {$lte:["$$t",NumberInt(1450787615)]}]}
                                }
                           }
                    }
}}
])

由于您一直使用较旧版本的mongoDB,因此无法利用3.2中引入的功能

您必须按以下方式进行汇总:

db.collection.aggregate([
{$match:{"time":{$gte:NumberInt(1450787307), $lte:NumberInt(1450787615)}}},
{$unwind:"$time"},
{$match:{"time":{$gte:NumberInt(1450787307), $lte:NumberInt(1450787615)}}},
{$group:{"_id":"$word","count":{$sum:1}}}
])
翻译成PHP

在版本3.2中,您可以使用和的组合来实现相同的结果,并且操作成本更低

db.collection.aggregate([
{$match:{"time":{$gte:NumberInt(1450787307), 
                 $lte:NumberInt(1450787615)}}},
{$project:{"_id":0,"word":1,
           "count":{$size:{$filter:
                               {"input":"$time",
                                "as":"t",
                                "cond":{$and:[
                                     {$gte:["$$t",NumberInt(1450787307)]},
                                     {$lte:["$$t",NumberInt(1450787615)]}]}
                                }
                           }
                    }
}}
])

好的,在尝试了很多之后,我得到了这个答案,并且是正确的 对于 1450787615-下限 1450855155-上限

db.hashtags.aggregate([
    {
        "$match": {
            "time": {
                "$gte": 1450787615, "$lte": 1450855155  
            }
        }
    },
    { "$unwind": "$time" },
    {
        "$match": {
            "time": {
                "$gte": 1450787615, "$lte": 1450855155  
            }
        }
    },
    {
        "$group": {
            "_id": "$word",
            "count": {
                "$sum": 1
            }
        }
    }
])
答案是

{
    "result" : [ 
        {
            "_id" : "batman",
            "count" : 3
        }, 
        {
            "_id" : "dear",
            "count" : 1
        }, 
        {
            "_id" : "ghost",
            "count" : 1
        }
    ],
    "ok" : 1
}

好的,在尝试了很多之后,我得到了这个答案,并且是正确的 对于 1450787615-下限 1450855155-上限

db.hashtags.aggregate([
    {
        "$match": {
            "time": {
                "$gte": 1450787615, "$lte": 1450855155  
            }
        }
    },
    { "$unwind": "$time" },
    {
        "$match": {
            "time": {
                "$gte": 1450787615, "$lte": 1450855155  
            }
        }
    },
    {
        "$group": {
            "_id": "$word",
            "count": {
                "$sum": 1
            }
        }
    }
])
答案是

{
    "result" : [ 
        {
            "_id" : "batman",
            "count" : 3
        }, 
        {
            "_id" : "dear",
            "count" : 1
        }, 
        {
            "_id" : "ghost",
            "count" : 1
        }
    ],
    "ok" : 1
}


您可以发布您尝试过的查询以及面临的问题吗?您使用的是什么版本的mongodb?mongodb shell版本:2.6.11:从昨天晚上开始,我尝试了各种查询,但它们要么是错误的,要么给出了您使用的是哪种版本的PHP?您需要修改查询以符合您使用的PHP版本。我在rockmongoCan的主页上的工具->命令面板上运行了上述命令。请发布您尝试过的查询以及面临的问题?您使用的是哪个版本的mongodb?mongodb shell版本:2.6.11:从昨天晚上开始,我尝试过各种查询,但都是错误的要么是错误的,要么是给出了一个答案,您使用的是哪个版本的PHP?您需要修改查询以符合您使用的PHP版本。我在rockmongoYou的主页上的工具->命令面板上运行了上述命令。您是对的,但遍历光标非常复杂且耗时。因为我的收藏中有大约3000个这样的mongo文档。我已经提供了答案。谢谢您的回答是正确的,但这是正确的遍历光标非常复杂且耗时。因为我的收藏中有大约3000个这样的mongo文档。我已经提供了答案。谢谢您对mongoDb有很好的了解谢谢:我也在阅读你的各种其他答案。请继续贡献。但当我运行此命令时,它不会给我任何结果:请参阅我的编辑question@user3426424-欢迎。我会调查一下的。请稍等。我已经提供了答案我也读了你的其他答案。你做得很好:你对mongoDb非常了解,谢谢我也在阅读你的各种其他答案。请继续贡献。但当我运行此命令时,它不会给我任何结果:请参阅我的编辑question@user3426424-欢迎。我会调查一下的。请稍等。我已经提供了答案我也读了你的其他答案。你做得很好: