你好,我开始学习mongoDB查询
我对聚合有一些理解上的问题
例如,我有以下文档:
[
{
totalTaxInclusive: 15,
totalTaxExclusive: 12.5,
payments:[{
method: "CB",
amount: 10
},
{
method: "CASH",
amount: 5
}
],
},
{
totalTaxInclusive: 40,
totalTaxExclusive: 33.33,
payments:[{
method: "CB",
amount: 40
}
],
},
]
等等。
我如何提出请求,我将拥有谁:
$group: {
_id: "$payments.method",
amount: { $sum: "$payments.amount"},
}
和a
$group: {
_id: null,
totalCount: { $sum: 1 },
totalTaxInclusive: { $sum: "$totalTaxInclusive"},
totalTaxExclusive: { $sum:"$totalTaxExclusive" },
}
产生如下结果:
{
totalCount: 2,
totalTaxInclusive: 55,
totalTaxExclusive: 45.83,
payments: [{
method: "CASH",
amount: 5,
},
{
method: "CB",
amount: 50,
}
]
}
非常感谢你的帮助。
总额中的所有项目进行求和。独占
和总额包含
数组支付
的第三阶段和第四阶段,因为它是数组的数组payment_method
分组,并按每个payment_method
db.collection.aggregate([
{
"$group": {
"_id": null,
"totalTaxInclusive": {
"$addToSet": "$totalTaxInclusive"
},
"totalTaxExclusive": {
"$addToSet": "$totalTaxExclusive"
},
"payments": {
"$addToSet": "$payments"
},
"count": {
"$sum": 1
}
}
},
{
"$set": {
"totalTaxExclusive": {
"$sum": "$totalTaxExclusive"
},
"totalTaxInclusive": {
"$sum": "$totalTaxInclusive"
}
}
},
{
"$unwind": "$payments"
},
{
"$unwind": "$payments"
},
{
"$group": {
"_id": "$payments.method",
"amount": {
"$sum": "$payments.amount"
},
"totalTaxInclusive": {
"$first": "$totalTaxInclusive"
},
"totalTaxExclusive": {
"$first": "$totalTaxExclusive"
},
"count": {
"$first": "$count"
}
}
},
{
"$group": {
"_id": null,
"payments": {
"$addToSet": {
"method": "$_id",
"amount": "$amount"
}
},
"totalTaxInclusive": {
"$first": "$totalTaxInclusive"
},
"totalTaxExclusive": {
"$first": "$totalTaxExclusive"
},
"count": {
"$first": "$count"
}
}
}
])
工作示例
$group
by null并获取所需字段的总和,构造支付数组
$concatArray
连接数组$减少
以将支付
的嵌套数组包含到数组$展开
解构支付
数组$group
bymethod
并获取金额
的总和并获取所需字段的第一个值$group
by null并构造支付
数组并获取计数字段第一个值db.collection.aggregate([
{
$group: {
_id: null,
totalTaxInclusive: { $sum: "$totalTaxInclusive" },
totalTaxExclusive: { $sum: "$totalTaxExclusive" },
totalCount: { $sum: 1 },
payments: { $push: "$payments" }
}
},
{
$addFields: {
payments: {
$reduce: {
input: "$payments",
initialValue: [],
in: { $concatArrays: ["$$this", "$$value"] }
}
}
}
},
{ $unwind: "$payments" },
{
$group: {
_id: "$payments.method",
amount: { $sum: "$payments.amount" },
totalTaxInclusive: { $first: "$totalTaxInclusive" },
totalTaxExclusive: { $first: "$totalTaxExclusive" },
totalCount: { $first: "$totalCount" }
}
},
{
$group: {
_id: null,
totalTaxInclusive: { $first: "$totalTaxInclusive" },
totalTaxExclusive: { $first: "$totalTaxExclusive" },
totalCount: { $first: "$totalCount" },
payments: {
$push: {
method: "$_id",
amount: "$amount"
}
}
}
}
])
游戏场
我面临mongo DB连接问题。 我成功地将tMongo组件导入我的Talend Open Studio 5.1.1,并复制了mongo 1.3。jar文件到lib/java文件夹,我的Mongo DB作业正在成功运行,但问题是,即使我为mongoDB提供了一些假服务器路径(IP)和假端口,我的作业运行时没有出现错误,它给了我一行没有数据的数据。正确的IP和端口也是如此。 我如何解决它。
MongoDB是一种文档导向数据库管理系统,由C++撰写而成。 本章节我们将为大家介绍如何使用 Node.js 来连接 MongoDB,并对数据库进行操作。 如果你还没有 MongoDB 的基本知识,可以参考我们的教程:MongoDB 教程。 安装驱动 本教程使用了淘宝定制的 cnpm 命令进行安装: $ cnpm install mongodb 接下来我们来实现增删改查功能。 创建数据库 要
下面是/etc/kafka/connect-MongoDB-source.properties中的MongoDB配置 但是低于误差 以独立模式运行连接器。 我在debezium-debezium-连接器-mongob-1.0.0/debezium-connector-mongodb-1.0.0.Final.jar 类路径的设置如下 使用插件路径,我看到它能够注册和加载所有必需的插件。 但最后还是同
我正在尝试使用MongoDB指南针使用Atlas
我试图在android中连接到我的MongoDB数据库,但我遇到了问题。我得到: I/Cluster:使用设置创建群集{hosts=[mlab_string],mode=single,requiredclustertype=unknown,serverselectiontimeout='30000 ms',maxwaitqueuesize=500} 然后我得到: I/cluster:Primary
在操作 MongoDB 数据库之前我们需要先连接数据库,您可以使用 MongoDB shell 来连接 MongoDB,也可以使用 PHP、Java 等编程语言来连接 MongoDB,本节我们主要介绍一下使用 MongoDB shell 来连接 MongoDB。 在连接 MongoDB 之前,我们需要先启动 MongoDB,启动 MongoDB 的方式非常简单,您只需要在 MongoDB 安装目录