gpt4 book ai didi

mongodb-聚合以获取计数。

转载 作者:可可西里 更新时间:2023-11-01 10:42:54 24 4
gpt4 key购买 nike

我一直在学习 mongodb,但在编写查询时有点卡住了。

我有以下收藏:

{
_id : 1,
House: A,
inventory: [
{
place: Kitchen,
item: fridge
},
{
place: Kitchen,
item: stove
},
{
place: Kitchen,
item: TV
},
{
place: Bedroom,
item: bed
},
{
place: Bedroom,
item: TV
}
]
},
{
_id : 2,
House: B,
inventory: [
{
....
}
]
},

我将如何编写查询以返回“地点”和“项目”的计数?所以输出应该是这样的:
{id: Kitchen, PlaceCount: 3, itemCount: 3} - 3 个厨房,3 个元素(冰箱,炉灶,电视)
{id: Bedroom, PlaceCount: 2, itemCount: 2} - 2 间卧室,2 件元素(床,电视)

我需要计算每个地方的电视数量。

最佳答案

你应该选择 Aggregation Pipeline ,它允许您通过数组提供的多个步骤来聚合数据。

您的聚合应该是:

db.your_collection.aggregate([
{$unwind: "$inventory" },
{$group: { _id: "$inventory.place", placeCount:{$sum : 1}, items : {$push: "$inventory.item"}}},
{$project: { placeCount: 1, itemsCount : {$size: "$items"}}}
])

解释:

  1. $unwind为您的每个库存元素生成一个结果
  2. $group按位置展开的库存元素,需要一个计数(使用 $sum )和一组项目(仍然按位置,使用 $push )
  3. $project上一步的分组结果的以下数据:items 数组的 placeCount 和大小(使用 $size),即 itemsCount

关于mongodb-聚合以获取计数。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32467005/

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