MongoDB 收集,用终端命令对所有键值求和
MongoDB Collection, sum all key values with terminal commands
这是我的一个项目 table :
{
"_id" : ObjectId("5c20erefebddfbc9fdsff"),
"name" : "robe simple",
"price" : 4.9,
"unit" : "piece",
"price_type" : "flexible",
"updated_at" : ISODate("2019-12-30T09:06:35Z"),
"created_at" : ISODate("2018-12-24T14:23:25Z"),
"conciergerie_ids" : [
"5c20ebefedcfbc9a103erfefeef921a9e2",
"5c20ebdefsfcfbc9a1efsefe03b921a9e3",
"5c20ebdsefefcfbc9a1sefef03b921a9e4",
],
}
我需要汇总特定礼宾部的所有价格,仅 created_at 2019 年。
我试过这个:
> db.prestations.find({'conciergerie_ids': '5c20ebseffhhb3b921adfdf9ef'}).count({ $sum: 'price' })
但我得到的只是与我的礼宾部相对应的所有物品的总数。
我也试过了:
> db.prestations.find({'conciergerie_ids': '5c20ebdcfbefefc9a103b921afefef9ef'}).aggregate([ { $group: total: {{ $sum: "$price" }} } ])
我怎样才能得到特定礼宾部所有价格的总和并且仅在 2019 年创建?谢谢!
您可以使用以下聚合:
db.collection.aggregate([
{
$match: {
$and: [
{ 'conciergerie_ids': '5c20ebdcfbc9a103b921a9ef'},
{ created_at: { $gte: ISODate("2019-01-01T00:00:00Z") } }
]
}
},
{
$group: {
_id: null,
total: { $sum: "$price" }
}
}
])
这是我的一个项目 table :
{
"_id" : ObjectId("5c20erefebddfbc9fdsff"),
"name" : "robe simple",
"price" : 4.9,
"unit" : "piece",
"price_type" : "flexible",
"updated_at" : ISODate("2019-12-30T09:06:35Z"),
"created_at" : ISODate("2018-12-24T14:23:25Z"),
"conciergerie_ids" : [
"5c20ebefedcfbc9a103erfefeef921a9e2",
"5c20ebdefsfcfbc9a1efsefe03b921a9e3",
"5c20ebdsefefcfbc9a1sefef03b921a9e4",
],
}
我需要汇总特定礼宾部的所有价格,仅 created_at 2019 年。
我试过这个:
> db.prestations.find({'conciergerie_ids': '5c20ebseffhhb3b921adfdf9ef'}).count({ $sum: 'price' })
但我得到的只是与我的礼宾部相对应的所有物品的总数。
我也试过了:
> db.prestations.find({'conciergerie_ids': '5c20ebdcfbefefc9a103b921afefef9ef'}).aggregate([ { $group: total: {{ $sum: "$price" }} } ])
我怎样才能得到特定礼宾部所有价格的总和并且仅在 2019 年创建?谢谢!
您可以使用以下聚合:
db.collection.aggregate([
{
$match: {
$and: [
{ 'conciergerie_ids': '5c20ebdcfbc9a103b921a9ef'},
{ created_at: { $gte: ISODate("2019-01-01T00:00:00Z") } }
]
}
},
{
$group: {
_id: null,
total: { $sum: "$price" }
}
}
])