gpt4 book ai didi

mongodb - 将值转换为mongodb中的键

转载 作者:可可西里 更新时间:2023-11-01 10:02:00 25 4
gpt4 key购买 nike

我有衬衫尺寸的 MongoDB 文档,其形状如下:

{ "_id" : "L", "count" : 2.0 },
{ "_id" : "XL", "count" : 2.0 },
{ "_id" : "XXXL", "count" : 1.0 },
{ "_id" : "M", "count" : 1.0 }

如何返回符合这些条件的单个文档:

  • 返回值,而不是键
  • 按衬衫尺码标签订购
  • 将浮点值转换为整数
  • 衬衫尺码标签不存在时返回值为 0

想要的形状:

{
S: 0,
M: 1,
L: 2,
XL: 2,
XXL: 0,
XXXL: 1
}

最佳答案

您需要先使用 $group 将所有值推送到数组中使用kv 对阶段...然后使用arrayToObject 提取键值对聚合,最后你必须检查 $ifNull每种尺寸的条件

db.collection.aggregate([
{ "$group": {
"_id": null,
"array": {
"$push": {
"k": "$_id",
"v": "$count"
}
}
}},
{ "$replaceRoot": {
"newRoot": { "$arrayToObject": "$array" }
}},
{ "$addFields": {
"S": { "$ifNull": ["$S", 0] },
"M": { "$ifNull": ["$M", 0] },
"L": { "$ifNull": ["$L", 0] },
"XL": { "$ifNull": ["$XL",0]},
"XXL": { "$ifNull": ["$XXL", 0]},
"XXXL": { "$ifNull": ["$XXXL", 0] }
}}
])

输出

[
{
"L": 2,
"M": 1,
"S": 0,
"XL": 2,
"XXL": 0,
"XXXL": 1
}
]

查一下here

关于mongodb - 将值转换为mongodb中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51141666/

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