我使用的是MongoDB 3.2。
在这个问题上遇到问题。。。
(为类似SQL的语法提前道歉,我只是从SQL学习Mongo)
我需要找到文件的数量
"audit_event_type_id" : 1
shop2.date" BETWEEN "2014-10-01" AND "2015-09-01"
按类别分组
shop2.facility_name
MONTH(shop2.date)
YEAR(shop2.date)
订购人
count DESC
有没有办法将查询中的字符串转换为日期?我知道我在存储shop2。当日期应为ISODate时,将其作为字符串。如果不是,我们就假设它是一个ISODate。
下面是一个文档示例:
{
"_id" : ObjectId("56b38f31967a337c432119cb"),
"audit_event_id" : 12382306,
"audit_event_type_id" : 2,
"group_id" : 3333489,
"applicant_id" : 3428508,
"service_credit_id" : 3804844,
"page_hit_id" : 43870954,
"shop1" : {
"facility_id" : 28,
"facility_name" : "Fake1",
"date" : "2014-08-13",
"time" : "07:00",
"expedite" : false,
"collect_biometrics" : false,
"block_id" : 364814,
"appointment_category" : "Renewal"
},
"shop2" : {
"facility_id" : 29,
"facility_name" : "Fake2",
"date" : "2014-08-07",
"time" : "07:00",
"expedite" : false,
"block_id" : 373614,
"appointment_category" : "Biometrics"
},
"created_at" : "2014-07-30 00:44:36",
"updated_at" : "2014-07-30 00:44:36",
"user_id" : 3242890,
"payment_id" : null,
"mission_id" : 24,
"affected_user_id" : null
}
任何帮助都将不胜感激。谢谢
我已经更新了所有的shop1。日期
{
"_id" : ObjectId("56b38f31967a337c432119cb"),
"audit_event_id" : 12382306,
"audit_event_type_id" : 2,
"group_id" : 3333489,
"applicant_id" : 3428508,
"service_credit_id" : 3804844,
"page_hit_id" : 43870954,
"shop1" : {
"facility_id" : 28,
"facility_name" : "Fake1",
"date" : ISODate("2014-08-13T00:00:00Z"),
"time" : "07:00",
"expedite" : false,
"collect_biometrics" : false,
"block_id" : 364814,
"appointment_category" : "Renewal"
},
"shop2" : {
"facility_id" : 29,
"facility_name" : "Fake2",
"date" : ISODate("2014-08-07T00:00:00Z"),
"time" : "07:00",
"expedite" : false,
"block_id" : 373614,
"appointment_category" : "Biometrics"
},
"created_at" : "2014-07-30 00:44:36",
"updated_at" : "2014-07-30 00:44:36",
"user_id" : 3242890,
"payment_id" : null,
"mission_id" : 24,
"affected_user_id" : null
}
您可以使用mongodb中的聚合框架来实现以下目的:
db.Collection.aggregate([
{ $match: {
audit_event_type_id: 1,
"shop2.date": { $gte: ISODate("2014-10-01T00:00:00.000Z"), $lt: ISODate("2015-09-01T00:00:00.000Z") } }
},
{ $group : {
_id : { "shop2.facility_name": "$shop2.facility_name", month: { $month: "$shop2.date" }, year: { $year: "$shop2.date" } },
count: { $sum: 1 } }
},
{ $sort : { count: -1 } }
])
{应用程序:“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之外的I
我正在查找与url匹配但返回自定义对象的记录。 我有这个模型。。 我想查询该模型并匹配url,但返回如下响应: 我需要能够通过将记录的ip与过程中的变量进行比较,动态计算反应的ip是否为真。 一次尝试是 但我似乎无法集中IP并查看我的变量IP是否在该数组中。 谢谢你的帮助。我第一次问!
本文向大家介绍MongoDB聚合分组多个结果,包括了MongoDB聚合分组多个结果的使用技巧和注意事项,需要的朋友参考一下 要聚合多个结果,请在MongoDB中使用$group。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是汇总组多个结果的查询- 这将产生以下输出-
我有以下计数查询: 有没有办法使用single aggregation()和嵌套的$group来实现这一点mongodb@3.2? 我知道这是mapReduce()的一个经典用例,但我在这里没有选择,因为$group by parameters()是一个动态生成的属性,因此聚合阶段的构建也是动态的。 预期输出与两个计数查询的结果相同。-
我的mongoDB集合中有一千多个文档,其中每个文档都表示这样一首歌的数据: 现在,在聚合管道的帮助下,我想按以下方式对我的集合进行分组。到目前为止,我可以对1个阶段进行分组,但我很难将整个根文档进行到底,并进行嵌套分组。 列出所有流派-
假设我有一个MongoDB集合,其中包含以下信息: 我想计算按州分组的订单总价的总和,其中项目为“苹果”,颜色为“红色”。我的问题是: 但是,我希望能够将我的结果cust\u id包含在\u id中,它是一个数组/映射/一些结构,其中包含构成我的合计的所有客户id的列表。因此,我希望我的输出包含 是否有办法处理此mongo聚合/查询?或者是一种更好的方式来构造此查询,以便我可以按州分组计算红苹果的