【问题标题】:Convert MySQL query to Mongo将 MySQL 查询转换为 Mongo
【发布时间】:2015-05-28 21:45:59
【问题描述】:

我有以下查询,我想转换成 Mongo 那么我该怎么做

SELECT COUNT(*) AS count_all, DATE(created_at) AS date_created_at FROM “表”按日期分组(created_at)

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

【问题讨论】:

    标签: ruby-on-rails mongodb mongodb-query


    【解决方案1】:

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

    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++;
        }
    });
    

    【讨论】:

      【解决方案2】:

      在 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])
      

      更多示例,请参阅docs

      【讨论】:

        猜你喜欢
        • 2022-01-17
        • 2021-06-19
        • 1970-01-01
        • 2019-12-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-29
        • 2018-11-01
        • 2013-07-10
        相关资源
        最近更新 更多