Как вставить встроенный документ с пунктирным полем в MongoDb - PullRequest
0 голосов
/ 12 апреля 2020

Допустим, у меня есть следующее Java org.bson.Document

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

Когда я вставляю do c в я получил "Пунктирное поле 'field.with.dot' недопустимо для хранилище ", я проверил документацию, что mongoDB не допускает пунктирные поля во вложенном документе.

  1. как мне обойти это? потому что документ генерируется динамически, поэтому он может иметь точечные поля на нескольких уровнях. Отмечено: я не хочу заменять символ «точка».

  2. Можно ли разбить пунктирное поле на вложенные поля?

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

1 Ответ

0 голосов
/ 13 апреля 2020

Вы должны построить вложенные документы

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")
    )
  )
);
...