在 mongoDB 中使用带有 ArrayList<Object> 的 InsertMany 和 spring boot

Using InsertMany with ArrayList<Object> in mongoDB with springboot

是否可以对 ArrayList 使用 insertMany? 我实现了一个代码,但数据没有插入到集合中。

ObjectId logId = new ObjectId();
    LogFile data =logfileRepo.save(new LogFile(String.valueOf(logId), fileName, now));
   
    ArrayList<Object> listdata = new ArrayList<>();
    if (arr != null) {

        //Iterating JSON array
        for (int i=0;i<arr.size();i++){

            //Adding each element of JSON array into ArrayList
            listdata.add(arr.get(i));
        }
    }
    MongoClient mongo = new MongoClient(new 
    MongoClientURI("mongodb+srv://rusiru:rus@cluster0.xemlu.mongodb.net/myFirstDatabase?retryWrites=true&w=majority"));
    MongoDatabase database = mongo.getDatabase("LApp");
    database.createCollection(String.valueOf(logId));
    database.getCollection(String.valueOf(logId)).insertMany(listdata)

这里arr是一个jsonArray。

您需要将这些对象映射到 MongoDB 文档。

void insertMany(java.util.List<? extends TDocument> documents)

使用可以为您进行映射的库,例如 Morphia,或者您可以这样做:

ObjectId logId = new ObjectId();
LogFile data =logfileRepo.save(new LogFile(String.valueOf(logId), fileName, now));
List<Document> documents = arr.stream()
            .map(jsonStr -> Document.parse(jsonStr))
            .collect(Collectors.toList());

MongoClient mongo = new MongoClient(new 
MongoClientURI("mongodb+srv://rusiru:rus@cluster0.xemlu.mongodb.net/myFirstDatabase?retryWrites=true&w=majority"));
MongoDatabase database = mongo.getDatabase("LApp");
database.createCollection(String.valueOf(logId));
database.getCollection(String.valueOf(logId)).insertMany(documents);