Java MongoClient添加新的嵌入式文档

Java MongoClient添加新的嵌入式文档,java,mongodb,micronaut,micronaut-data,Java,Mongodb,Micronaut,Micronaut Data,我在mongodb中有以下数据类型 { "_id" : ObjectId("60007b3abc54b5305e9f5601"), "description" : "Mens", "name" : "Men" } 由于上述数据已经是现有数据,现在使用MongoClient,我希望插入基于\u id的新嵌入文档,如下所示 { "_id&

我在mongodb中有以下数据类型

{
    "_id" : ObjectId("60007b3abc54b5305e9f5601"),
    "description" : "Mens",
    "name" : "Men"
}
由于上述数据已经是现有数据,现在使用MongoClient,我希望插入基于\u id的新嵌入文档,如下所示

{
    "_id" : ObjectId("60007b3abc54b5305e9f5601"),
    "description" : "Mens",
    "name" : "Men",
    "subCategory" : [{
        "name" : "This is name update",
        "description" : "This is update"
    }]
}
一旦插入了数组,我又需要向数组中添加另一项,如下所示

{
    "_id" : ObjectId("60007b3abc54b5305e9f5601"),
    "description" : "Mens",
    "name" : "Men",
    "subCategory" : [{
        "name" : "This is name update",
        "description" : "This is update"
    },
{
        "name" : "This is name update",
        "description" : "This is update"
    }]
}
要更新的代码:

import static com.mongodb.client.model.Filters.eq;

MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("some_db_name");
MongoCollection<Document> collection = database.getCollection("some_database");
Document document = collection.find(eq("_id", new ObjectId("60007b3abc54b5305e9f5601")))
                              .first();

Object object = document.get("subCategory");

List<Document> documents = new ArrayList<>();

if(object != null) {
  documents = (List<Document>) object;
}

documents.add(new Document("name", "This is name update")
              .append("description", "This is update")); 

document.append("subCategory", documents);

collection.updateOne(eq("_id", new ObjectId("60007b3abc54b5305e9f5601")), 
         new Document("$set", new Document("subCategory", documents)));

 
导入静态com.mongodb.client.model.Filters.eq;
MongoClient MongoClient=新的MongoClient(“本地主机”,27017);
MongoDatabase=mongoClient.getDatabase(“some_db_name”);
MongoCollection collection=database.getCollection(“some_数据库”);
Document Document=collection.find(eq(“_id”,新ObjectId)(“60007b3abc54b5305e9f5601”))
.first();
Object=document.get(“子类别”);
列表文档=新建ArrayList();
if(对象!=null){
文档=(列表)对象;
}
文件。添加(新文件(“名称”,“这是名称更新”)
.append(“description”,“This is update”);
文件。附加(“子类别”,文件);
collection.updateOne(eq(“_id”,新ObjectId)(“60007b3abc54b5305e9f5601”),
新文件(“$set”,新文件(“子类别”,文件));

阅读文档:

document.get(“子类别”)此对象在开始时不存在。所以List documents=(List)document.get(“子类别”);如果子类别不可用,则将不起作用present@SanJaisy现在更新。看看。@SanJaisy你在吗?