聚合_id中相同字段错误

2023-12-10

我在 mongodb 中有一个像这样格式的集合:

"_id" : ObjectId("542d5256372943d9e000fc42"),
    "_class" : "com.bedas.ays.mongo.dto.AboneAriza",
    "AdSoyad" : "AKIN COBAN",
    "aimid" : 100009,
    "CepTelefon" : "5332234401",
    "Telefon" : "0",
    "fiderid" : 101383,
    "kofrano" : NumberLong(444454),
    "tcNo" : "26402622688",
    "tmno" : {
        "trafoNo" : 21649,
        "trafoname" : "21450 BÜYÜKŞEHİR FİDERİ-->21646 BEYKOP 2.BÖLGE"
    },
    "ilce" : {
        "ilceUavt" : 2051,
        "ilcename" : "BEYLİKDÜZÜ"
    },
    "mahalle" : {
        "mahalleUavt" : 40875,
        "mahname" : "BARIŞ"
    },
    "sokak" : {
        "_id" : 716802,
        "name" : "EGEMENLİK CAD."
    },
    "bina" : {
        "_id" : 15600414,
        "name" : "ERCİYES APT. A-1"
    },
    "longitude" : "41.00345215",
    "latitude" : "28.65782942",
    "aboneno" : "00005181209",
    "bolge" : 1,
    "sube" : {
        "_id" : 4,
        "name" : "AVCILAR",
        "Bolgeid" : 0
    },
    "kademeler" : [ 
        {
            "kademeId" : 1567,
            "isemriId" : 3661,
            "elektrikselAdresNo" : 21649,
            "isemirleri" : {
                "_id" : null,
                "id" : 3661,
                "isemriNo" : 3661,
                "anahtarKelime" : "",
                "aciklama" : "deneme erkan1",
                "emreAmade" : false,
                "degistirmeSebebi" : "",
                "acil" : false,
                "longitude" : "28.65831040",
                "latitude" : "41.00287477",
                "il" : {
                    "_id" : 1,
                    "name" : "ISTANBUL"
                },
                "basvuruTuru" : {
                    "_id" : 1,
                    "name" : "Bildirimli",
                    "id" : 1
                },
                "kesintiTipi" : {
                    "_id" : 1,
                    "name" : "AG şube",
                    "id" : 1
                },
                "havaKosulu" : {
                    "_id" : 1,
                    "name" : "Açık",
                    "id" : 1
                },
                "kesintiDurumu" : {
                    "_id" : 1,
                    "name" : "Tamir edildi",
                    "id" : 2
                },
                "gerilimTuru" : {
                    "_id" : 1,
                    "name" : "34,5 KV",
                    "id" : 1
                },
                "sebekeUnsuru" : {
                    "_id" : 1,
                    "name" : "TM",
                    "id" : 1
                },
                "isemriKaynagi" : {
                    "_id" : 1,
                    "name" : "İletim",
                    "id" : 1
                },
                "birimi" : {
                    "_id" : 1,
                    "name" : "Kesinti",
                    "subeid" : 0,
                    "id" : 1
                },
                "isemriSebebi" : {
                    "_id" : 1,
                    "name" : "Mücbir sebep",
                    "id" : 1
                },
                "isemriSureTipi" : {
                    "_id" : 1,
                    "name" : "Uzun",
                    "id" : 1
                },
                "arizaKapatmaTarihi" : null,
                "baslamaZamani" : null,
                "tahminiBitisZamani" : null,
                "adres" : "    ",
                "basvuruSayisi" : 2,
                "sonaErmeZamani" : null,
                "kesintiSuresiSaat" : null,
                "etkilenenKullaniciSayisi" : null,
                "imarAlaniAg" : null,
                "imarAlaniOg" : null,
                "toplamEtkilenmeSureAg" : null,
                "toplamEtkilenmeSureOg" : null,
                "emreAmadeTarihi" : null,
                "emreAmadeSureOg" : null,
                "isemriBaslatan" : null,
                "isemriDegistiren" : null,
                "isemriKapatan" : null,
                "kofraNo" : null,
                "kaydeden" : null,
                "ihbarTarihi" : null,
                "direkNo" : null
            }
        }
    ]
}

I use spring-data用于在此集合中查询,我的查询如下:

Criteria criteria = Criteria
                    .where("kademeler.isemirleri.basvuruTuru.id").is(2)
                    .and("kademeler.isemirleri.isemriSureTipi.id").is(1)
                    .and("kademeler.isemirleri.kesintiDurumu.id").is(2);

            Aggregation aggregation = newAggregation(
                    match(criteria),
                    unwind("kademeler"),
                    match(criteria),
                    group("kademeler.isemirleri.isemriKaynagi.name",
                            "kademeler.isemirleri.isemriSebebi.name").count()
                            .as("etkilenenAboneSayisi")
                    );

But the name两者的领域isemriSebebi and isemriKaynagi具有相同的字段名称name.当我映射到一个对象时aggregationResult它给出了一个错误'Same field error'我该怎么做才能避免这个错误?因为我的所有嵌入文档的类都有相同的字段,名为name.


不是最清楚的记录点。您需要不同的表示形式Fields此处对象正确定义您的多字段条件:

Aggregation aggregation = newAggregation(
    match(criteria),
    unwind("kademeler"),
    match(criteria),
    group(
        Fields.from(
            Fields.field("name1", "kademeler.isemirleri.isemriKaynagi.name"),
            Fields.field("name2", "kademeler.isemirleri.isemriSebebi.name")
        )).count().as("etkilenenAboneSayisi")
);

那就是使用Fields.field定义具有“名称”和“目标”,以便正确解释。使用纯字符串只会导致默认操作,即删除所有内容,直到字段名称中的最后一个“点”,并且根据您的错误,这些都是同一件事。以此形式指定告诉构建器您希望如何正确处理它。

这基本上序列化了$group as:

{ "$group": {
    "_id": {
        "name1": "$kademeler.isemirleri.isemriKaynagi.name",
        "name2": "$kademeler.isemirleri.isemriSebebi.name"
    },
    "etkilenenAboneSayisi": { "$sum": 1 }
}}

这就是你想要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

聚合_id中相同字段错误 的相关文章

  • Mongoose 模型 update() 与 save()

    有一个关于问题update vs save https stackoverflow com questions 39010045 mongoose update vs save 但它针对的是一些不同的东西 我猜 纯粹相关mongoose S
  • Mongodb更新很多

    我正在使用express js 和 npm 模块 mongodb 进行开发 并以 mongodb 作为数据库 我有两个集合 即 用户 和 活动 一个用户可能有数千个活动 首先 我将用户的 id 姓名和图片 url 存储到 关系的活动文件 请
  • 使用 Tweepy 获取推文时出错

    我有一个用于获取推文的 Python 脚本 在脚本中我使用该库 Tweepy 我使用有效的身份验证参数 运行此脚本后 一些推文存储在我的 MongoDB 中 有些则被 if 语句拒绝 但我仍然收到错误 requests packages u
  • Node.js 检测两个猫鼬查找何时完成

    我正在尝试使用自动完成功能初始化两个输入library https www devbridge com sourcery components jquery autocomplete 当我加载页面时 我将触发 Ajax 来初始化两个输入文本
  • 获取对象数组中每个嵌套对象的虚拟属性?

    所以我知道如何获取单个虚拟属性 如 Mongoose 文档中所述 PersonSchema virtual name full get function return this name first this name last 但如果我的
  • 在 MongoDB 聚合的“addField”操作中使用“$count”

    我正在尝试找到聚合运算符的正确组合 以将标题为 totalCount 的字段添加到我的 mongoDB 视图中 这将为我提供聚合管道特定阶段的计数 并将其输出为每个文档的计数结果 count count 但最终我得到了一个具有此结果的文档
  • 如何处理 MongoDB 的断开连接错误

    我在 Node js 进程中看到了这个未捕获的异常 Uncaught exception Error read ETIMEDOUT at TCP onStreamRead internal stream base commons js 16
  • 将域类从 GORM 独立模块导入到 Grails 中

    我有两块拼图 1 一个名为的无 Grails 项目core module使用独立的 GORM dependencies compile org grails grails datastore gorm mongodb 6 0 4 RELEA
  • MongoDB 过滤嵌套对象中的数组元素

    我有一个文件如下 id ObjectId 56423b2558cb340599108b35 test source member abc member xyz 我想过滤数组元素 xyz 并且我正在尝试以下查询 db coll find te
  • NestJs/Mongoose 中的自动递增序列

    我正在将 NodeJs 项目迁移到 NestJs 该项目使用 MongoDB 作为后端数据库 使用 Mongoose 作为 ODM 我当时用的是猫鼬序列 https github com ramiel mongoose sequence插件
  • 通过在 body、mongoose/mongodb 中提供文档来更新多个文档

    我需要通过在正文中提供一些文档来更新它们 我无法查询它们 必须提供它们 Example var persons id 1 name Joe active false id 2 name Jane active false 该数据在正文中提供
  • MongoDB:如何在嵌套数组中更新插入对象?

    考虑以下文档 countries country France cities city Paris population 100 country England cities city
  • 使用 mongoimport 从 Windows 文件夹批量导入 MongoDB

    我的存档中有很多 json 文件 我需要将它们导入到 mongo 每一个操作中 我认为它可能是循环的 你对此有什么想法吗 如果您使用的是 Linux Unix shell 您可以尝试 for filename in do mongoimpo
  • 自动执行异步函数

    下面的代码可以完美运行 const Course mongoose model Course courseSchema async function foo const nodeCourse new Course name Node JS
  • mongodb从不同数据库中选择

    我有大约 200 个 mongodb 数据库 每个数据库都有一个名为 Group 的集合 在该集合中有一个名为 meldingId 的字段 是否可以进行一个 mongodb 查询来查找不同数据库中的所有值 我设法通过 selectDB da
  • 在这种情况下如何填充 Mongoose?

    const userSchema new mongoose Schema email type String unique true password String notifications notifiId type Schema Ty
  • MongoDB 按数组内部元素分组

    我有一个文章列表 每篇文章都有一个数组属性 其中列出了其中提到的各个个人 id oid 52b632a9e4f2ba13c82ccd23 providerName The Guardian url http feeds theguardia
  • MongoEngine 查询具有以列表中指定的前缀开头的属性的对象的列表

    我需要在 Mongo 数据库中查询具有以列表中任何前缀开头的特定属性的元素 现在我有一段这样的代码 query mymodel terms term in query terms 并且这会匹配在列表 term 上有一个项目的对象 该列表中的
  • Mongoose - 查询从多个集合中获取数据

    我想要获取猫鼬的查询在 Node js 应用程序中 如下所述输出 user js comment js 和 post js 是我使用的模型文件 user js var mongoose require mongoose var Schema
  • pymongo MongoClient 连接到 ReplicaSet

    我采用 pymongo 的 MongoClient 类来连接到具有三个节点 1 个主节点 2 个辅助节点 的副本集 代码片段如下 c MongoClient secondary1 hostname secondary2 hostname r

随机推荐