Путаница между документом и DBObject при переходе с Java-драйвера MongoDb 2.13 на 3.3

Я просто меняю свой проект со старой версии 2.13 на новую версию Java-драйвера 3.3. Теперь, учитывая, что Document в любом случае заменит DBObject, я решил заменить его. Все работает как очарование... за исключением того, что (старая) БД не принимает документы, которые я пытаюсь бросить в нее.

Не должен ли insertOne принять файл org.bson.Document так же хорошо, как он принимал DBObject раньше?

Мои документы построены так:

static synchronized Document CommentsToDocument(Comment comment) {
    return new Document().append("source", comment.getSource()).append("date", comment.getDateTime())
            .append("author", comment.getAuthor()).append("thread", comment.getThreadID())
            .append("commentID", comment.getCommentID()).append("title", comment.getTitle())
            .append("comment", comment.getComment());
}

static synchronized Document UrlsToDocument(String url, int counter) {
    return new Document("url", url).append("count", counter);
}

Эти документы затем добавляются в деку. И должен быть вставлен так:

static synchronized void writeToDb(String col, ConcurrentLinkedDeque<Document> comments) {
    MongoCollection<Document> collection = database.getCollection(col);
    for (Document o : comments) {
        collection.insertOne(o);
    }
}

Да, я знаю, writeToDb довольно не элегантный, и я найду лучший способ.;)

Пока я только сталкиваюсь с проблемой, что БД, которая просто отлично принимала объекты BasiDBObjects того же состава, не принимает Документы.

Хранятся ли объекты как BasicDBObjects внутри, так что мне сначала нужно проанализировать документы? Или есть способ заставить БД принимать Документы такими, какие они есть, с БД, анализирующей их внутренне?

Или мне нужно прочитать все объекты из старой БД, создать новую и записать их обратно после повторного анализа? оо

Спасибо за совет.

PS: я уже прочитал информацию об операциях CRUD, но не смог найти причину, по которой он не принял бы мои объекты документа просто отлично. Я, наверное, неопытный, чтобы увидеть очевидное, так что да.;)

PPS: Интересно, я могу читать документы просто отлично. Единственная разница между документами, которые я получаю и пытаюсь получить, заключается в отсутствии _id..., что не должно быть проблемой. Я также рассмотрел возможность проблемы с индексами, но коллекция URL-адресов индексируется только уникально по URL-адресу (и, конечно, _id) и должна принимать новые (отличающиеся) записи.

1 ответ

Решение

Нашел решение. По-видимому, некоторые bool-флаги на совершенно другой части кода были сброшены. Ваши вопросы об исключениях ведут меня на правильный путь, поскольку их не было. Что означало, что это не проблема БД вообще. БД правильно пожала плечами всех документов, которые она уже имела в своем индексе.

Другие вопросы по тегам