首页 > 解决方案 > 如何在 mongodb 查询中检查 if 条件中的空数组?

问题描述

我试图通过使用 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”。请帮忙 !!!

标签: mongodbmongodb-queryaggregation-frameworkphp-mongodb

解决方案


RecentAllotmentsDetails =>  {
                              $cond: { if: { $ne: [ 
                              "$NonExpiredAllotmentsOfRoom", [] ] }, 
                               then: ['$arrayElemAt' => 
                                      ['$NonExpiredAllotmentsOfRoom', -1 ]] ,
                               else: []
                                }   

                              }

在你的管道中试试这个


推荐阅读