如何在嵌入式文档中查询$ regex以计算不同的值

杰拉特

我有以下格式的文档集合:

{ 
    "_id" : ObjectId("abc"), 
    "mobile" : "123456789", 
    "channels" : [
        {
            "name" : "email.xz", 
            "type" : "a", 
            "properties" : [
                {
                    "provider" : "outlook"
                }
            ]
        }, 
        {
            "name" : "sms", 
            "type" : "sms"
            }
    ], 

}

我需要找到至少具有一个名称以“ .xz”结尾的通道的客户,但前提是提供者存在且具有值,并返回每个通道的客户数。例如:

email.xz = 10
sms.xz = 5
push.xz = 7

我尝试使用下面的聚合函数,但是它得出了所有符合条件的客户。

db.consumers.aggregate(
{$match: {"channels.name": {$regex: ".xz$"}, 
"notificationChannels.properties.provider": { $exists: true }}},
{$group: {_id: "channels.name"},
count: {$sum: 1}})
尼尔·伦恩

$unwind数组,然后$match再次以相同的方式。第一个匹配项只是选择文档,并且您要过滤:

db.consumers.aggregate(
  { $match: {
    "channels.name": {$regex: ".xz$"}, 
    "channels.properties.provider": { $exists: true }
  }},
  { $unwind: "$channels" },
  { $match: {
    "channels.name": {$regex: ".xz$"}, 
    "channels.properties.provider": { $exists: true }
  }},
  { $group:{
    "_id": "$channels.name",
    "count": {$sum: 1}
  }}
)

由于您$group要从阵列“内部”使用键,$unwind因此无论如何都需要它。由于您只想要符合条件的数组条目,因此使用a的唯一方法$regex$match$unwind

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在嵌入式函数中存储值

如何在Mongoid中找到字段值为nil的嵌入式文档?

如何使用Mongoose将值推入MongoDB中嵌入式文档中的数组?

如何在 MongoDb 中查询嵌入式文档?

如何在嵌入式数组mongodb中查询嵌入式文档

mongodb汇总嵌入式文档值

如何在Pyspark中获取嵌入式Angular JavaScript文本框值

Mongo查询键值不是特定值的嵌入式文档

Mongodb node.js 查询嵌入式文档具有多个值的单个字段。

查找数组中是否存在嵌入式文档,并获取父文档的属性值

如何通过dompdf中的嵌入式php打印值

计算嵌入式文档/数组中字段的平均值

如何在MongoDB中查询数组中的单个嵌入式文档?

如何计算嵌入式mongodb php?

如何获取具有嵌入式键值对数组的PyMongo文档的值(实时)

如何在 rails only 查询中包含嵌入式文档

如何在Rails和Mongoid中查询嵌入式文档

根据mongoDB聚合中的条件,项目嵌入式文档密钥值

查询MongoDB中的嵌入式文档

计算嵌入式文档mongodb C#LINQ

如何在嵌入式文档中查找某个元素

如何在mongodb中搜索嵌入式文档?

如何在Meteor中循环浏览嵌入式文档

嵌入 angular 或使用嵌入式 URL REST API 后,如何从嵌入式 Power BI 报告/视觉对象中读取数据点值详细信息?

Mongodb查询以计算所有文档中的不同值

计算与查询结果不同的值

Mongo查询的存在和嵌入式对象属性的值

如何将ObjectIds数组转换为带有包含原始数组元素值的字段的嵌入式文档数组

如何将嵌入式文档数组上移到父级并使用聚合管道更改键/值