首页 > 解决方案 > Spring MongoDb:使用 bean 类创建关于未知字段的索引

问题描述

我遇到了一个我不知道是否可行的问题。

我需要存储一个包含已知字段的文档类,但我还需要存储一个未知字段:

@Document
public class Metadata {

    @Indexed
    private String user;

    private Object metadata;
}

所有这些未知字段都存储在metadata字段中。

不过,我认识他们中的一个人。我的意思是,在metadata字段内部会有用户想要的任何东西,但有些字段是应用程序知道的。

我想知道如何为这些未知metadata领域创建索引。

例子:

{ user: user, metadata: {known: v, unknown: nv}} }

我想在metadata.known字段中创建一个索引。

问题是,由于该字段未设置为 java bean 字段,因此我无法将其注释为@Indexed.

有任何想法吗?

标签: springspring-data-mongodb

解决方案


作为猜测,你为什么不一分为metadata Object二呢?

一个用于您可以索引的已知字段,另一个用于您无法索引的未知字段。例如:

@Document
public class Metadata {

  @Indexed
  private String user;

  @Indexed
  private Object knownMetadata;

  private Object unknownMetadata;

}

结果,您将获得类似于以下内容的内容:

{ user: user, knownMetadata: {knownField1: v, knownField2: nv}, unknownMetadata: {unknownField1: v, unknownField2: nv}} }

推荐阅读