Spring数据MongoDb:MappingMongoConverter删除_class

2024-01-21

默认映射MongoConverter向数据库中的每个对象添加自定义类型键(“_class”)。所以,如果我创建一个人:

package my.dto;
public class Person {
    String name;
    public Person(String name) {
        this.name = name; 
    }
}

并将其保存到数据库:

MongoOperations ops = new MongoTemplate(new Mongo(), "users");
ops.insert(new Person("Joe"));

mongo 中的结果对象将是:

{ "_id" : ObjectId("4e2ca049744e664eba9d1e11"), "_class" : "my.dto.Person", "name" : "Joe" }

问题:

  1. 将 Person 类移动到不同的命名空间会产生什么影响?

  2. 是否可以不使用“_class”键污染对象;不为 Person 类编写一个独特的转换器?


故事是这样的:我们默认添加类型作为某种提示实际实例化什么类。因为您必须通过管道输入类型才能将文档读入其中MongoTemplate无论如何,有两种可能的选择:

  1. 您提交一个可以分配给实际存储类型的类型。在这种情况下,我们考虑存储类型,将其用于对象创建。这里的经典示例是进行多态查询。假设你有一个抽象类Contact和你的Person。然后您可以查询Contacts 和我们基本上have to确定要实例化的类型。
  2. 另一方面,如果您传递完全不同的类型,我们只需将其编组为给定类型,而不是实际存储在文档中的类型。这将涵盖您的问题,如果您移动类型会发生什么。

您可能有兴趣观看这张票 https://jira.springsource.org/browse/DATADOC-63其中涵盖了某种可插入类型映射策略,用于将类型信息转换为实际类型。这可以简单地达到节省空间的目的,因为您可能希望将长限定类名减少为几个字母的散列。它还允许更复杂的迁移场景,在这些场景中,您可能会发现另一个数据存储客户端生成的完全任意类型键并将它们绑定到 Java 类型。

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

Spring数据MongoDb:MappingMongoConverter删除_class 的相关文章

  • 服务器发现和监控引擎已弃用

    我在 Node js 应用程序中使用 Mongoose 这是我的配置 mongoose connect process env MONGO URI useNewUrlParser true useUnifiedTopology true u
  • 将 mongo 数组转换为具有键值对的对象

    我有一个包含字符串数组的 mongo 文档 我需要将这个特定的字符串数组转换为包含键值对的对象数组 以下是我目前的做法 id ObjectId 57e3720836e36f63695a2ef2 platform A1 available C
  • Mongoose查询结果是只读的吗?

    如何修改 Mongoose 查询返回的对象 假设我们有以下模式 var S new mongoose Schema name String field String 我对结果进行了以下查询和修改 var retrieve function
  • MongoDB 将数字转换为科学计数法的字符串

    我想获得完整的号码String 但反而 1490650000000 它返回科学计数法 1 49065e 12 这是我尝试转换它的方法 substr myNumber 0 1 有什么想法如何预防吗 Note 我使用的是v3 6 无法升级使用
  • JPA - OneToOne 外键作为主键

    我有一个表 需要其主键作为其他表的外键 因此是单向的一对一关系 每本书只有一个作者 如下所示 Entity public class Author Id String code getters and setters Entity publ
  • 多文档事务在使用 mongodb 4.08 社区服务器的 C# 中不起作用

    我需要使用 mongodb 事务更新多个文档 mongodb 社区服务器版本是 4 08 net 的 mongodb 驱动程序是 2 9 beta 也尝试过 2 8 从调试中 我可以看到它执行了 session AbortTransacti
  • Flask 不加载配置

    我在 Flask 中加载配置时遇到问题 from config import config DevelopmentConfig TestingConfig ProductionConfig def create app config nam
  • 清理 MongoDB 的输入

    我正在为 MongoDB 数据库程序编写 REST 接口 并尝试实现搜索功能 我想公开整个 MongoDB 接口 我确实有两个问题 但它们是相关的 所以我将它们放在一篇文章中 使用 Python json 模块解码不受信任的 JSON 是否
  • 如何使用 Spring Data Rest 和 PagingAndSortingRepository 处理异常?

    假设我有一个像这样的存储库 public interface MyRepository extends PagingAndSortingRepository
  • MongoDB 如何选择候选计划

    我的应用程序中的查询速度很慢 创建两个索引后 它在本地数据库中使用它们以获得更好的性能 但是当我部署在生产数据库上时 它仍然使用原始索引 下面是我所做的 集合中的属性tasks team id project id created by a
  • Spring Data:2个不同数据源之间的关系

    在 Spring Boot 应用程序项目中 我有 2 个数据源 MySQL 数据库 又名 db1 MongoDB 数据库 又名 db2 我在用着Spring数据JPA and Spring数据MongoDB 而且效果很好 一次一个 假设 d
  • 如何在 Spring MongoDB 聚合上投影 DBRef?

    我在 MongoDB shell 中完成了以下聚合 以获取每个用户每种类型的警报数量 db getCollection alerts aggregate unwind son group id son son level level cou
  • 使用 python 字典更新 MongoEngine 文档?

    是否可以使用 python 字典更新 MongoEngine 文档 例如 class Pets EmbeddedDocument name StringField class Person Document name StringField
  • Mongoose 总是返回空数组? [复制]

    这个问题在这里已经有答案了 我是nodejs i的新手 我已经有一个名为aqi的数据库 集合名称为pln 我试图在网页上显示集合中的所有记录 但猫鼬总是返回空数组 我已经用其他数据库测试了它 但我可以从它们获取数据 但对于 pln mong
  • MongoDb Spring 在嵌套对象中查找

    我正在使用 Spring Data Mongodb 和这样的文档 id ObjectId 565c5ed433a140520cdedd7f attributes 565c5ed433a140520cdedd73 333563851 list
  • Model.find() 在猫鼬中返回空[重复]

    这个问题在这里已经有答案了 我正在使用 mongoose 来列出 mongodb 数据库中集合中的所有数据 从请求中 http localhost 3000 listdoc model Organization 我正在执行以下代码 expo
  • 在 NodeJs 中处理 Mongodb 全局连接的最佳方法是什么

    I using 节点 Mongodb Native https github com mongodb node mongodb native并尝试设置全局连接变量 但我对两种可能的解决方案感到困惑 大家能帮我看看哪一款比较好吗 1 解决方案
  • 本地 SQLite 与远程 MongoDB

    我正在设计一个新的 Web 项目 在研究了一些旨在可扩展性的选项后 我提出了两个数据库解决方案 为可扩展方式精心设计的本地 SQLite 文件 每个 X 用户一个新的数据库文件 因为写入将取决于用户内容 不存在跨用户数据依赖性 远程 Mon
  • MongoDB - 两个多边形的地理空间交集

    有没有什么方法可以使用符合以下条件的 mongodb 地理空间查询来查询和获取位置数据 获取属于两个框或一般两个多边形之间相交部分的所有位置 例如下面的示例 我们是否可以在查询输出中仅获取黄色区域内的那些位置 该区域实际上是紫色和红色几何对
  • 如何在 SpringBoot v3.0.0 中使用嵌入式 MongoDB?

    我正在尝试连接嵌入式 mongodb 并使用 MongoDbSpringIntegrationTest 对其进行测试 问题是相同的代码在 2 7 7 中适用于 spring boot 但在 3 0 0 中不适用于 spring boot 问

随机推荐

  • Python Eve - 使用 objectid 的 where 子句

    我在 settings py 中定义了以下资源 builds item title builds schema sources type list schema type objectid data relation resource so
  • 使用 jersey-spring3 从 JerseyTest 容器中检索托管 bean

    这个问题是上一个问题的后续问题指定自定义应用程序上下文 https stackoverflow com questions 18278769 specify custom application context 我们正在将一些数据服务从使用
  • 启动“com.twitter.android.PostActivity”时出错

    我向 Twitter 调用了共享文本的意图 在不更改代码的情况下 一天又一天 此调用已停止工作 意图是 Intent share new Intent Intent ACTION VIEW share setClassName com tw
  • Azure 中的 REST API 日志

    是否有办法查看通过 REST API 完成的所有请求 我希望能够监视客户端 ID 完成的 REST API 调用 我想了解调用了哪些特定 API 如果可能的话 每个调用的请求 响应是什么样的 只是将其发布在这里以帮助将来的问题发布者 这是您
  • 将类切换绑定到窗口滚动事件

    当用户将浏览器窗口滚动到某个点以下时 我将切换 page div 的类 到目前为止我所做的工作正常 http jsfiddle net eTTZj 29 http jsfiddle net eTTZj 29 div div
  • 插入/删除触发器表上的慢连接

    我们有一个触发器 可以为表创建审计记录并连接inserted and deleted表以查看是否有任何列已更改 连接对于小型集合一直运行良好 但现在我要更新大约 100 万行 并且几天之内就不会完成 我尝试更新具有不同数量级的选定行数 很明
  • Android - 未找到活动异常

    我正在使用 startActivity 调用另一个 Activity 但收到 Activity Not Found Exception 这是我的代码 TextView textView TextView itemClicked String
  • 我想在服务器上 24/7 运行 Python 脚本 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在制作一个模拟虚拟货币股票市场的程序 我还没有尝试过任何东西 但我想要一个Python脚本能够24
  • 数据库时区问题

    我在尝试与数据库 MySQL 建立连接时收到此错误 java sql SQLException 服务器时区值 CEST 无法识别或代表多个时区 如果要利用时区支持 则必须配置服务器或 JDBC 驱动程序 通过 serverTimezone
  • 为什么我的 Mac (OS X 10.7.3) 有旧版本 (2.3) 的 Gnu Bison?

    我的 mac 上的 GNU Bison 版本是 2 3 但我知道 Bison 2 5 很久以前就发布了 这本书弗莱克斯和野牛使用2 5版本 我应该自己升级到2 5吗 有必要吗 2 3和2 5有什么区别 我在 MacOSX 10 9 5 上遇
  • 是否有任何架构使用相同的寄存器空间来进行标量整数和浮点运算?

    我见过的大多数支持本机标量硬件 FP 支持的架构将它们推入完全独立的寄存器空间 与主寄 存器集分开 我见过的大多数支持本机标量硬件 FP 支持的架构将它们推入完全独立的寄存器空间 与主寄 存器集分开 X86 的传统 x87 FPU 使用带有
  • 应该是 DDD 中域的本地化部分

    在遵循 DDD 概念的同时 我正在努力决定是否应该让我的域本地化意识 我提出了两个解决方案来解决这个问题 两者都使域本地化能够在不同的地方实现 我是否应该将本地化文本放入域中 分享您对此问题的解决方案或我的两个示例的优缺点 谢谢 实施例1
  • 内存管理、堆损坏和 C++

    所以 我需要一些帮助 我正在开发一个 C 项目 然而 我认为我已经设法破坏了我的堆 这是基于我添加了一个事实std string给一个类并为其分配另一个类的值std string std string hello Hello world n
  • 在SceneKit中使用Vuforia提供的投影矩阵和标记姿势

    目前 我正在尝试解决在 SceneKit 中渲染时投影矩阵和帧标记姿势的使用问题 场景中的模型和相机图像背景显示没有问题 然而 一旦我更改投影矩阵和帧标记姿势矩阵以匹配 Vuforia 所有内容都会被推到屏幕外 func didUpdate
  • Talend 中的行到列转换

    我正在学习 Talend Open studio 我想实现一行转换为3行的场景 我的来源就像 Col1 Col2 Col3 a b c 我想得到如下所示的输出 Col a b c 我使用了 tcolumntopivotdelimited 但
  • React-native 本机模块可用于 IOS 上的后台任务

    我的问题 我有一个与医疗 BLE 设备通信的应用程序 我已经一切正常 但我的问题是 当 ios 用户将应用程序放在后台时 我停止获取 处理通过蓝牙发送的消息 Android 似乎不断收到这些消息 但据我发现 在 iOS 上 JS 桥已被拆除
  • PHP 获取不带扩展名的当前页面名称?

    我想将当前页面文件名显示为页面标题 但不带扩展名 如果可能的话 第一个字符应该大写 这可能吗 每个人都喜欢俏皮话 ucfirst pathinfo SERVER PHP SELF PATHINFO FILENAME 第二个参数pathinf
  • 将变更集转换为搁置集

    是否可以仅通过 tfs tfpt 中的某些操作从一个分支的两个版本的差异创建一个搁置集 例如从 变更集 2013 gt 变更集 2034 创建搁置集 可以从具有一些限制的变更集创建搁置集 我需要从分支回滚更改以将其从版本中删除 但它也不在任
  • 如何使用php在FTP服务器上上传大文件?

    ftp server ftp abc com remote file myvideo avi file size 210MB file myvideo avi file size 210MB conn id ftp connect ftp
  • Spring数据MongoDb:MappingMongoConverter删除_class

    默认映射MongoConverter向数据库中的每个对象添加自定义类型键 class 所以 如果我创建一个人 package my dto public class Person String name public Person Stri