Mysql 将SQL更改为NoSQL查询
我是NoSQL数据库的新手,我有这个查询Mysql 将SQL更改为NoSQL查询,mysql,sql,mongodb,Mysql,Sql,Mongodb,我是NoSQL数据库的新手,我有这个查询 SELECT COUNT(*) AS TotalIndex, SUM(Expense)AS Outflow, SUM(Income) AS Inflow, DATE_FORMAT(Date, '%b, %Y') AS Month FROM store GROUP BY month, year(Date) ORDER BY Date 但我不知道从哪里开始,我一直在尝试使用它,但它没有帮助太多 任何帮助都将不胜感激您可以使用mongodb构建查询 假设您的
SELECT COUNT(*) AS TotalIndex, SUM(Expense)AS Outflow, SUM(Income) AS Inflow, DATE_FORMAT(Date, '%b, %Y') AS Month
FROM store
GROUP BY month, year(Date)
ORDER BY Date
但我不知道从哪里开始,我一直在尝试使用它,但它没有帮助太多
任何帮助都将不胜感激您可以使用mongodb构建查询
假设您的数据库表“store”至少有三个字段(费用、收入和日期),类似的内容可以工作(未经测试):
您的文档将通过一个由几个阶段组成的管道:
这实际上不是翻译。在
$组
之后,文档中没有可见的日期
等属性,您建议将其设置为$sort
。这就是“管道”的工作原理。其中,给定阶段唯一可用的“输入”是其之前阶段的“输出”。如果你理解管道的概念和实际发生的事情,那么在$project
之前进行$project
也是一种非常可怕的做法。你说得对,尼尔,我想让OP先发制人,我会马上更正我的答案。@AkimanaAjoullyJeand'Amour,没问题。如果我的回答对您有所帮助,您可以通过单击旁边的复选标记来接受它。“转换我的代码”问题通常没有帮助,这主要是由于不同技术的工作方式不同,以及它们之间的“您应该如何以不同的方式存储内容”。真正的第一站应该是,而不是任何外部资源(而且已经过时,因为group()
现在已不推荐使用)。然后,如果您在理解上仍然有问题,请给出一个实际的尝试和小数据示例。个人知识胜过工具。
db.store.aggregate(
[
{ $project : { expense: 1, income: 1, date:1, month: { $month: "$date" }, year: { $year: "$date"} } },
{ $group : { _id : {month: '$month',year:'$year'}, totalIndex: { $count: 1 }, outflow: { $sum: "$expense" }, inflow: { $sum: "$income" } } },
{ $sort : { date : 1 } },
{ $project : { totalIndex: 1, outflow: 1, inflow:1, month: { "$concat" : [ "$month", ", ", "$year" ] } } }
]
)