当前位置: 首页 > 知识库问答 >
问题:

Elixir和mongodb聚合

经骁
2023-03-14
{ "_id" : "some_id", "city" : { "name" : "City1" }}
def get_trip_list() do


{:ok, conn} = Mongo.start_link(url:"mongodb://localhost:27017/myaguila")

    cursor = Mongo.find(conn, "trip", %{})

    cursor
    |> Enum.to_list()
  end
def get_total_count() do
    {:ok, conn} = Mongo.start_link(url: "mongodb://localhost:27017/myaguila")
    cursor = Mongo.count(conn, "trip", %{})
    {:ok, total} = cursor
    {:total_trips, total}
  end
db.collection_name.aggregate([{$group: {_id : "$city", count: {$sum: 1}}}])

并给我带来这些结果:

{“_id”:{“name”:“city1”},“count”:212}

{“_id”:{“name”:“city2”},“count”:1200}

https://hexdocs.pm/mongodb/readme.html#贡献

提前谢了。

共有1个答案

经博延
2023-03-14

这就是解决方案:

mongo.aggregate(pid,“trip”,[%{“$group”=>%{“_id”=>“$city.name”,“count”=>%{“$sum”=>1}}}])

我错过了第一层地图前的方括号。

 类似资料:
  • 本文向大家介绍MongoDB聚合和投影,包括了MongoDB聚合和投影的使用技巧和注意事项,需要的朋友参考一下 为此,请使用$project和aggregate()。聚合中的$project将带有请求字段的文档传递到管道的下一个阶段。 让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是对MongoDB聚合和投影的查询- 这将产生以下输出-

  • 我使用Nodejs和MongoDB与expressjs和mongoose库,创建一个具有用户、文章和评论模式的博客API。下面是我使用的模式。

  • 主要内容:aggregate() 方法,管道MongoDB 中的聚合操作用来处理数据并返回计算结果,聚合操作可以将多个文档中的值组合在一起,并可对数据执行各种操作,以返回单个结果,有点类似于 SQL 语句中的 count(*)、group by 等。 aggregate() 方法 您可以使用 MongoDB 中的 aggregate() 方法来执行聚合操作,其语法格式如下: db.collection_name.aggregate(aggr

  • 我有一种情况,我需要根据一个数组值执行一个group by操作,该数组值将字段值的出现次数相加。然后对计数进行过滤,并准备结果,以便根据条件显示结果。从本质上讲,文档被转换回如果您只使用find函数就会呈现的方式。由于matchedDocuments数组中收集的项的数量,我遇到了临时文档太大的问题。任何关于如何改进这一点的建议都将是有益的。 以下是一些示例文档和基于上述标准的预期结果:

  • 我想在带有条件的集合列表中获得多个字段。我尝试了一个聚合请求,但我有一个错误。 我的请求 我的Json: 例如,我想在result中获得这个json: