mongodb - 如何在 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”。请帮忙 !!!
解决方案
RecentAllotmentsDetails => {
$cond: { if: { $ne: [
"$NonExpiredAllotmentsOfRoom", [] ] },
then: ['$arrayElemAt' =>
['$NonExpiredAllotmentsOfRoom', -1 ]] ,
else: []
}
}
在你的管道中试试这个
推荐阅读
- docusignapi - 我想使用 Power Apps 创建一个 DocuSign 自定义连接器,但在我测试它时它不发送信封
- r - 将宽数据合并为长数据帧格式R
- javascript - highcharts 使用一组值构建地图并将另一组值显示为标签
- c# - 如何使用 C# Firebird 对数据库执行选择查询并将其显示在 shell 中?
- c++ - 检查一个序列是否由两个相同的序列组成
- c# - 如何使用静态类中的事件更新 Web 窗体用户控件?
- python - 为井字游戏训练代理时出现 Keras-RL 错误:“预期 dense_16_input 具有 2 维,但得到的数组形状为 (1, 1, 3, 3)”
- python - 将 pandas 列中的 json 扩展到整个数据框
- excel - 如何将表格展平为一行?
- google-cloud-platform - terraform 将云作曲家从 1.0 升级到 2.0?