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

Mongodb聚合计数数组/集大小

严劲
2023-03-14

{应用程序:“ABC”,日期:time.now,状态:“1”user_id:[id1,id2,id4]}

{应用程序:“ABC”,日期:time.listerment,状态:“1”,user_id:[id1,id3,id5]}

{应用程序:“ABC”,日期:time.ystayday-1,状态:“1”,user_id:[id1,id3,id5]}

我目前正在使用聚合框架并计算MongoDB之外的ID。

{$match:{application:“ABC”}},{$unwind:“$users”},{$group:{_id:{status:“$status”},用户:{$addtoset:“$users”}}}

我的用户ID数组非常大,所以我必须迭代日期,否则我将获得最大文档限制(16MB)。

我也可以通过

{年:{$年:“$date”},月:{$月:“$date”},日:{$dayofmonth:“$date”}

谢谢

共有1个答案

赫连越
2023-03-14

下面将返回每个应用程序的uniqueUsers数。这将通过使用MongoDB的管道特性将组操作应用于组操作的结果。

{ $match: { application: "abc" } }, 
{ $unwind: "$users" }, 
{ $group: { _id: "$status", users: { $addToSet: "$users" } } }, 
{ $unwind:"$users" }, 
{ $group : {_id : "$_id", count : {$sum : 1} } }

希望在mongo的后续发行版中,通过一个命令来给出投影下数组的大小,这将以更容易的方式完成。{$project:{id:“$_id”,计数:{$size:“$uniqueusers”}}}https://jira.mongodb.org/browse/server-4899

干杯

 类似资料:
  • 我使用的是MongoDB 3.2。 在这个问题上遇到问题。。。 (为类似SQL的语法提前道歉,我只是从SQL学习Mongo) 我需要找到文件的数量 按类别分组 订购人 有没有办法将查询中的字符串转换为日期?我知道我在存储shop2。当日期应为ISODate时,将其作为字符串。如果不是,我们就假设它是一个ISODate。 下面是一个文档示例: 任何帮助都将不胜感激。谢谢 我已经更新了所有的shop1

  • 使用MongoDB 3.4。10和猫鼬4.13。6我能够计算用户模型上两个阵列的大小: 我的用户所在的位置(per) {“_id”:ObjectId(“5a2b21e63023c6117085c240”),“右投票”:[2],“左投票”:[1,6]} {“_id”:ObjectId(“5a2c0d68efde3416bc8b7020”),“右投票”:[2],“左投票”:[1]} 在这里,我得到了预

  • 第一个名为的文档包含以下文档(不包括): 第二个集合名为,具有以下文档: 上的 预期的结果是: 如何使用聚合查询来实现这一点?

  • 我正在查找与url匹配但返回自定义对象的记录。 我有这个模型。。 我想查询该模型并匹配url,但返回如下响应: 我需要能够通过将记录的ip与过程中的变量进行比较,动态计算反应的ip是否为真。 一次尝试是 但我似乎无法集中IP并查看我的变量IP是否在该数组中。 谢谢你的帮助。我第一次问!

  • 有人知道如何使用Spring-Data将下面的聚合函数转换成java代码吗?

  • 本文向大家介绍如何在MongoDB聚合中将数组元素的子集相加?,包括了如何在MongoDB聚合中将数组元素的子集相加?的使用技巧和注意事项,需要的朋友参考一下 要将数组元素的子集加在一起,请使用$first和$sum。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 这是将MongoDB聚合中数组元素的子集加在一起的查询- 这将产生以下输出-