繁体   English   中英

聚合中的条件 $sort

[英]Conditional $sort in aggregation

我想要对价格进行条件排序,数据库中有两种价格,所以我正在检查sellTypefixed 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM