[英]Conditional $sort in aggregation
我想要对价格进行条件排序,数据库中有两种价格,所以我正在检查sellType
是fixed price
还是bid
,
if(sellType===fixed price)
那么我想获取正常价格,但是if(sellType===bid)
然后我想从存储在数组中第 0 个 position 的 object 中获取价格。
所以我尝试进行聚合查询,分享我的代码片段
{
$addFields: {
sortedPrice: {
$cond: {
if: {
$eq: ["$itemDetail.sellType","fixed price"]
},
then: '$itemDetail.price',
else: '$itemDetail.bidInfo[0].price',
}
}
}
}
我已经尝试了所有可能的解决方案,但无法从bidInfo
数组中获取价格。 bidInfo
是一个对象数组,但我只想要第 0 个 position object (价格非常精确)
您可以尝试使用$arrayElemAt
,
{
$addFields: {
sortedPrice: {
$cond: {
if: {
$eq: ['$itemDetail.sellType', 'fixed price'],
},
then: '$itemDetail.price',
else: { $arrayElemAt: ['$itemDetail.bidInfo.price', 0] },
},
},
},
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.