gpt4 book ai didi

mysql - 将 Mysql 查询转换为 Mongodb find()

转载 作者:行者123 更新时间:2023-11-30 00:04:56 25 4
gpt4 key购买 nike

我有一个 mongodb 集合,其结构如下:

{ "client" : "CLIENTIDHERE", "amount" : 90, "invoice": "SOMEIDHERE", "date" : ISODate("2014-07-09T11:13:49.273Z") }

并且需要以某种方式选择客户支付的所有付款。在 mysql 中我会做这样的事情,但是对于 mongodb 我真的没有任何线索。

SELECT SUM(amount) payments,client FROM invoices GROUP BY client;

我尝试过的:

db.invoices.find({
$group: {
amount: {$sum: "$amount"}
}
}, {
$project:{
amount: "$amount",
client: "$client"
}
})

但是没有成功。我做错了什么?

编辑:我收到以下错误:错误:{“$err”:“不支持的投影选项:金额”,“代码”:13097}

最佳答案

您的$group步骤没有定义GROUP BY的内容。 MongoDB 与 SQL GROUP BY 的等效项是 $group 语句的 _id 字段,该字段在您的查询中缺失。另外,当您想使用aggregation时,您需要使用 .aggregate( 而不是 .find(.

db.invoices.aggregate({
$group: {
_id: "$client",
amount: { $sum: "$amount"}
}
});

这会将客户端写入 _id 字段。当您希望将字段命名为 client 时,您可以在 $project 步骤中修复该问题,但在这种情况下不需要投影。

关于mysql - 将 Mysql 查询转换为 Mongodb find(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24652794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com