Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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
Ruby on rails 将MySQL查询转换为Mongo_Ruby On Rails_Mongodb_Mongodb Query - Fatal编程技术网

Ruby on rails 将MySQL查询转换为Mongo

Ruby on rails 将MySQL查询转换为Mongo,ruby-on-rails,mongodb,mongodb-query,Ruby On Rails,Mongodb,Mongodb Query,我有下面的问题,我想转换成Mongo,那么我怎么能 选择COUNT(*)作为COUNT\u all,选择DATE(创建日期)作为DATE\u created\u at FROM “表”按日期分组(创建时间) 另外,请解释一下,以便下次我可以自己做。您可以尝试以下方法。我希望这对你有帮助 db."TABLE".group({ "key": { "created_at": true }, "initial": { "count_all": 0

我有下面的问题,我想转换成Mongo,那么我怎么能

选择COUNT(*)作为COUNT\u all,选择DATE(创建日期)作为DATE\u created\u at FROM “表”按日期分组(创建时间)


另外,请解释一下,以便下次我可以自己做。

您可以尝试以下方法。我希望这对你有帮助

db."TABLE".group({
    "key": {
        "created_at": true
    },
    "initial": {
        "count_all": 0
    },
    "reduce": function(obj, prev) {
        if (true != null) if (true instanceof Array) prev.count_all += true.length;
        else prev.count_all++;
    }
});

在mongodb中,您可以使用以下聚合管道:

db.collection.aggregate( [
   {
     $group: {
        _id: "$created_at",
        count_all: { $sum: 1 }
     }
   },
   {
     $project: {
        _id: 0, date_created_at: "$_id", count_all: 1
     }
   }
])
然后可以将其转换为ruby语法,如下所示:

project = {"$project" => 
  {
    "_id" => 0,
    "date_created_at" => "$_id", 
    "count_all" => 1
  }
}
group =  { "$group" =>
  { "_id" => "$created_at", "count_all" => { "$sum" => 1 } } 
}
Table.collection.aggregate([group,project])
有关更多示例,请参阅