mongodb - 如果子数组中的条件,Mongo聚合删除组
问题描述
在我的管道的某个点,我有一个这样的结构:
[
{
_id: 1,
elems1: [{sub : {date: xxx}}, {sub: {date: yyy}}],
elems2: [{sub: {date: zzz}}, {sub: {date: qqq}}]
},
...
]
来自一个分组:
{$group: {
_id: '$user.id',
elems1: {
$push: {sub: '$other'}
},
elems2: {
$push: {sub: '$other'}
}
}
}}
现在我想删除在elems1
ORelems2
中具有sub.date
小于某个日期的元素的组,我该怎么做?
解决方案
当您执行您的$group
时,您还可以跟踪“minElemDate”,然后$match
在下一个管道阶段进行跟踪。
$group: {
_id: "$user.id",
elem1s: ...,
elem2s: ...
minElemDate: {
$min: {
$cond: [
{ $or: [condition1, condition2] },
"$user.date",
null
]
}
}
},
{ $match: {$gte: ["$minElemDate", minDate]} }
推荐阅读
- javascript - 错误:连接丢失:服务器关闭了连接。节点/mysql
- javascript - 从多个按钮中获取标题属性
- reactjs - React Context 和 Hooks API 的酶错误
- html - 大量标签会给 DOM 带来压力吗?
我的一位主管建议我不应该
<table>
在我的 UI 的特定情况下使用标签。我只生成了几个单元格来环绕和构建一些内容,因为如果网页有太多
<table>
标签,遍历 DOM 可能会很慢,例如使用 Document.SelectByID 方法。我不认为这是真的,但与此同时,我找不到关于它的意见。其他人怎么看?
- python - 找到一个大秩正半定矩阵 *C*,其条目产生奇异矩阵 *L*
- angular - 如何使用 RXJS 刷新陈旧但活跃的数据
- git - 将并行分支组合成线性 git 历史
- html - 如何设置
- python - python生成一百万个不同的数字需要多长时间?
- r - ggtext标签:仅为负值更改颜色