JSON Вставить в Монго - PullRequest
3 голосов
/ 21 мая 2019

У меня есть объект JSON, который я создаю с помощью библиотеки Gson.Я хочу вставить этот объект в MongoDB, используя Java Mongo Driver v3.8.1 с UUID в качестве идентификаторов и типом int64 для моих целых чисел.Тем не менее, похоже, что это вставка как String и Int32 типа.

JsonObject folderObject = new JsonObject();
folderObject.addProperty("id", UUID.randomUUID().toString());
folderObject.addProperty("cid", document.getCid());

Я конвертирую это в BSON

org.bson.Document doc= org.bson.Document.parse(folderObject .toString());

и вставляю в MongoDB с помощью

  mongoCollection.insertOne(doc);

my document.getCid () имеет тип Long, но все еще вставляется как int32, и я не могу передать что-либо, кроме String, в folderObject.

Ответы [ 3 ]

1 голос
/ 21 мая 2019

Я использую Spring для этого.Код гласит:

import com.mongodb.MongoClient;
import org.springframework.data.mongodb.core.MongoTemplate;


public class MyDao {

    private final MongoTemplate template;

    public MyDao(MongoClient client, String db) {
        this.template = new MongoTemplate(client, db);
    }

    public <T extends Serializable> void store(Collection<T> data, String collectionName) {
        template.insert(data, collectionName);
    }


}

1 голос
/ 21 мая 2019

Я думаю, вам не следует создавать JsonObject и анализировать его потом:

Можете ли вы просто попробовать это:

    Document doc = new Document()
            .append("id", UUID.randomUUID())
            .append("cid", document.getCid());
    mongoCollection.insertOne(doc);
0 голосов
/ 22 мая 2019

Решено с помощью кодека Mongo POJO.

CodecRegistry pojoCodecRegistry = fromRegistries(MongoClient.getDefaultCodecRegistry(),
                fromProviders(PojoCodecProvider.builder().automatic(true).build()));

    CodecRegistry codecRegistry =
                fromRegistries(CodecRegistries.fromCodecs(new UuidCodec(UuidRepresentation.STANDARD)),
                        MongoClientSettings.getDefaultCodecRegistry(),pojoCodecRegistry
                );

и затем вы можете выбрать запуск клиента с заданным кодеком или запуск базы данных с реестром кодеков или сбор с кодеком.

Ссылка - https://mongodb.github.io/mongo-java-driver/3.8/driver/getting-started/quick-start-pojo/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...