【问题标题】:How to check empty array in if condition in mongodb query?如何在 mongodb 查询中检查 if 条件中的空数组?
【发布时间】:2019-11-15 08:29:22
【问题描述】:

我试图通过使用 if else 条件编写以下 mongodb 投影查询来查找数组是否为空。

                [
                  '$project' => [ 
                      '_id' => 1.0,
                      'Name' => 1.0,
                       'AllotmentsDetails' => 1.0,
                       'NonExpiredAllotmentsOfRoomWithCheckoutZero' => 1.0,
                       'NonExpiredAllotmentsOfRoomWithCheckoutOne' => 1.0,
                       'NonExpiredAllotmentsOfRoom' => 1.0,      
                       'RecentAllotmentsDetails' =>  [
                            '$cond'=> [
                              'if'=> [
                                '$not' => ['$NonExpiredAllotmentsOfRoom' => [ '$size' => 0 ]]
                               ],
                               'then' => ['$arrayElemAt' => ['$NonExpiredAllotmentsOfRoom', -1 ]],
                               'else' => []
                              ]
                        ]    
                ]]    

基本上我正在尝试检查“$NonExpiredAllotmentsOfRoom”是否为空。如果它为空,则应返回空数组,否则应返回“$NonExpiredAllotmentsOfRoom”的最后一个元素。上面的代码抛出错误消息“无法识别的表达式'$NonExpiredAllotmentsOfRoom”。请帮忙 !!!

【问题讨论】:

  • 你能发布一些示例数据吗?

标签: mongodb mongodb-query aggregation-framework php-mongodb


【解决方案1】:
RecentAllotmentsDetails =>  {
                              $cond: { if: { $ne: [ 
                              "$NonExpiredAllotmentsOfRoom", [] ] }, 
                               then: ['$arrayElemAt' => 
                                      ['$NonExpiredAllotmentsOfRoom', -1 ]] ,
                               else: []
                                }   

                              }

在你的管道中试试这个

【讨论】:

    猜你喜欢
    • 2022-11-23
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多