如何通过mongodb Java驱动程序3.4+使用封顶集合添加多个文档?

时间:2018-09-09 19:05:11

标签: java mongodb

我想使用capped collection并像这样写一些文件:

// this code insert only first document using capped collection 
MongoDatabase database = mongoClient.getDatabase("db");
        database.createCollection("capped_collection",
                new CreateCollectionOptions().capped(true).sizeInBytes(536870912).maxDocuments(5000));

        MongoCollection<Document> collection = database.getCollection("capped_collection");

        Document found = database.getCollection("capped_collection").find(new Document("title", title)
                .append("url", url)
                .append("img", img)
                .append("price", price)).first();

        if (found == null) {

            collection.insertOne(new Document("title", title)
                            .append("url", url)
                            .append("img", img)
                            .append("price", price));

            mongoClient.close();
    }

在这种情况下,有上限的集合使我只能插入第一个文档,仅此而已(我想要几个而不是一个)。如果我创建普通收藏,我可以插入几个文档。为什么会发生?

MongoDatabase database = mongoClient.getDatabase("db");
        MongoCollection<Document> collection = database.getCollection("normal_collection");

        Document found = database.getCollection("normal_collection").find(new Document("title", title)
                .append("url", url)
                .append("img", img)
                .append("price", price)).first();

        if (found == null) {
            collection.insertOne(new Document("title", title)
                            .append("url", url)
                            .append("img", img)
                            .append("price", price));

            mongoClient.close();
        }

这样,我可以使用普通集合插入多个文档。

据我了解,将文档插入有上限的集合和普通集合之间的代码没有什么区别,但是实际上我得到的结果是不同的。

更新只是尝试通过Powershell手动将文档添加到封闭的集合中

在powershell中,手动如下所示: enter image description here

文档看起来像(作为测试): enter image description here

如果我错了,请纠正我。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

最后解决它。我需要to check for an existing collection

df %>% 
    group_by_at(vars(-Station_id)) %>% 
    mutate(flag = if_else(n() == 1, 0, 1))