当前位置: 首页 > 知识库问答 >
问题:

只为一个字段编写Mongo转换器

姬飞飙
2023-03-14

此字段必须在mongo数据库中,由等差日期表示。

我可以为整个Pojo编写一个转换器,但因为它只是25个字段中的一个,所以没有太大意义,而且当一个字段发生变化或添加更多字段时,它是错误的另一个位置。

是否有一种方法调用默认的转换器服务,并在默认的转换服务之后更改其他2个服务,这将对性能产生很大影响。还是有一个默认的转换器接口要覆盖?

是的,我也可以写一个LongToDate转换器,但这将影响所有的POJO,而不仅仅是这一个。

这里是示例POJO:

public class Person {
   private long someTimestamp;
//getters and setters
}

如果没有转换器,将如下所示:

{
    "_id" : ObjectId("52ae8eede4b0249cde22059e"),
    "someTimestamp" : NumberLong(1392714950940)
}
{
    "_id" : ObjectId("52ae8eede4b0249cde22059e"),
    "someTimestamp" : ISODate("2013-12-23T23:00:00.000Z")
}
{
    "_id" : ObjectId("52ae8eede4b0249cde22059e"),
    "items" : [
        "someTimestamp" : NumberLong(1392714950940)
    ]
}

POJO:

public class Person {
   private Collection<OtherPojoThatHoldsTimestamps> items;
//getters and setters
}

也许我应该提到我正在使用Spring来完成这一点。(http://projects.spring.io/spring-data-mongoDb/)

共有1个答案

凌鹏程
2023-03-14

听起来您需要注释驱动的转换。参考手册中的6.6.2节谈到了格式化程序的这一点,甚至有一个时间戳的示例。

一般的想法是,您可以用注释标记需要特殊处理的字段(这是注释的一个很好的用法,毕竟您指定的是元数据)。然后为具有该注释的字段注册一个转换器。

问题是我刚刚尝试了这个,不能让它工作,因为元数据正在丢失。我已经提交了一张JIRA罚单,看看是否有办法解决这个问题。

 类似资料:
  • 假设我已将以下对象序列化为json字符串: 现在我想反序列化它,但是我想把名称分成两个字段,和。我该怎么做呢? 我希望最终的结果是类似于: 这对Gson有可能吗?

  • 问题内容: 在游戏2.1中,读取用于将Json编组为对象。但是,当case类只有一个字段时,我该怎么做。适用于更多字段的意识形态无效,因为不使用一个字段“ and”。因此,我没有获得FunctionBuilder。 以下代码为我提供了类型不匹配的信息。我怎样才能解决这个问题? 问题答案: Json组合器不适用于单个字段案例类。 Pascal(此API的编写者)已在此处https://groups.

  • 问题内容: 我已经看到了一些类似于我的问题的答案,但我无法使它们起作用。我的查询中有几个日期字段,它们返回日期和时间,例如2014年7月1日12:00:00 AM。有什么办法可以让字段显示2014年7月1日? 我基本上想将两个日期字段缩减为较短的日期格式减去时间。 提前致谢! 问题答案: 使用to_char函数:

  • 在这里你可以下载一个acroform字段的pdf,他的大小正好是427KB 如果我删除这个唯一的字段,文件只有3KB,为什么会发生这种情况?我试着用PDF调试器分析,对我来说没有什么奇怪的。

  • 问题内容: 我正在将整个数据库访问层从Hibernate重写为JOOQ,并且遇到以下问题。 使用@Formula批注对JPA模型之一进行批注,如下所示: 在代码的后面,对数据库进行JPA查询,该数据库将 Fee5 与参数进行比较: 上面的查询如何转换为JOOQ DSL? 问题答案: 我设法通过以下JOOQ查询解决了该问题: