首页 > 解决方案 > 如何在 MongoDb 中插入带虚线字段的嵌入式文档

问题描述

假设我有以下 Java org.bson.Document

Document innerDoc = new Document();
innerDoc.put("field.with.dot", "something");
Document doc = new Document("inner", innerDoc);

当我将 doc 插入我得到“虚线字段'field.with.dot'对存储无效”时,我检查了 mongoDB 不允许嵌套文档中的虚线字段的文档。

  1. 我该如何解决这个问题?因为 Document 是动态生成的,所以它可能有好几层深的虚线字段。注意:我不想替换“点”符号。

  2. 是否可以将虚线字段分解为嵌套字段?

    {"inner": { 
        "field": { 
            "with": {
                 "dot": "something"
             }
         }
      }
    }

标签: javamongodbmongodb-javanested-documents

解决方案


您必须构建嵌套文档

Document innerWithDoc = new Document();
innerWithDoc.put("dot", "something");
Document innerFieldDoc = new Document();
innerFieldDoc.put("with", innerWithDoc);
Document innerDoc = new Document();
innerDoc.put("field", innerFieldDoc);
Document doc = new Document("inner", innerDoc);

或者您可以在一条指令中执行相同操作:

Document doc = new Document("inner", 
  new Document("field", 
    new Document("with", 
      new Document("dot", "something")
    )
  )
);

推荐阅读