Ruby on rails 将MySQL查询转换为Mongo
我有下面的问题,我想转换成Mongo,那么我怎么能 选择COUNT(*)作为COUNT\u all,选择DATE(创建日期)作为DATE\u created\u at FROM “表”按日期分组(创建时间)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
另外,请解释一下,以便下次我可以自己做。您可以尝试以下方法。我希望这对你有帮助
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])
有关更多示例,请参阅