javascript - Mongo $filter 条目在聚合 $addFields 中具有定义的字段
问题描述
我想获取数组的计数,其中每个项目都有某个字段的值。到目前为止,我已经尝试了不同的运算符,例如$ne
,$ifNull
但它们不起作用。
这里的代码示例:
{
$addFields: {
definedItemsCount: {
$size: {
$filter: {
input: '$itemList',
as: 'item',
cond: {
$ne: ['$$item.definedField', null],
},
},
}
},
},
},
这是我的文件item
{
title: String,
definedField: ObjectId
}
我只需要过滤分配了值的项目definedField
。
所以整个文档看起来像这样,我需要在其中获取被分配的计数items
而definedField
不是 null。我得到$ne
计数 2 而不是 1
[
{
"title": "Title text",
"items": [
{
"title": "some title"
"definedField": "5ff479fa3dd9d33fc8e3125f",
},
{
"title": "some title"
}
],
"definedCount": 2,
"id": "600e081854d922517ccc919e",
"date": "2021-01-24T23:51:52.820Z",
}
]
注意我不能使用$match
,因为数组items
是父母文档的字段
解决方案
推荐阅读
- r - 如何在 R Shiny 应用程序中保持 export_summs 的小数点四舍五入
- firebase - 初始登录后检索 Firebase Twitter 身份验证令牌
- arrays - 如何对具有多列vba的二维数组进行排序?
- javascript - 使用扩展运算符将对象推入数组?
- java - 如何将文件夹的详细信息发送到 servlet?
- javascript - AJAX 响应后数据表未更新
- javascript - 在 javascript/JQuery 中访问 Angular 的函数
- linux - 在 Linux 中删除以特定字符串结尾的特定文件
- android - 我的列表视图显示在应用标签上。如何解决这个问题..?
- azure - .NET Core 2.0 和 Azure Web Jobs 3.0 的 Azure 服务总线触发器配置缺失