gpt4 book ai didi

java - 如何在java中的mongodb现有文档中插入内部文档?

转载 作者:行者123 更新时间:2023-12-02 05:04:28 26 4
gpt4 key购买 nike

我在集合名称 user 中有一个文档,如下所示:

{
"_id" : "abc@gmail.com",
"Password" : "xyz",
"first_name" : "ABC",
"last_name" : "PQR",
}

我想插入一个内部文档job_desc,其中包含一些条目,例如jobplacesalary修改user文档后就变成这样了

{
"_id" : "abc@gmail.com",
"Password" : "xyz",
"first_name" : "ABC",
"last_name" : "PQR",
"doc" : { "job_desc" : "Design Engineer", "place" : "Bengaluru", "salary" : 40K USD }
}

我尝试使用append,但它用于新文档条目,然后使用$set,但它用于替换指定值。如何满足我的要求?

最佳答案

使用 Java 插入新的嵌套对象

BasicDBObject doc = new BasicDBObject("doc",new BasicDBObject("job","Design Engineer").append("place","Bengaluru").append("salary", "40K USD"));
BasicDBObject query = new BasicDBObject();
query.put("_id","abc@gmail.com");
BasicDBObject set = new BasicDBObject("$set", doc);
collection.update(query, set);

// result doc
{
"_id" : "abc@gmail.com",
"Password" : "xyz",
"first_name" : "ABC",
"last_name" : "PQR",
"doc" : {
"job" : "Design Engineer",
"place" : "Bengaluru",
"salary" : "40K USD",
}
}

在 mongo 控制台中,使用此代码仅向现有嵌套文档(或不存在的事件)添加一个值:

db.collection.update({"_id":"abc@gmail.com"}, {$set : {'doc.newField' : 'newValue'}})

结果将是:

// modified doc
{
"_id" : "abc@gmail.com",
"Password" : "xyz",
"first_name" : "ABC",
"last_name" : "PQR",
"doc" : {
"job" : "Design Engineer",
"place" : "Bengaluru",
"salary" : 500,
"newField" : "newValue"
}
}

关于java - 如何在java中的mongodb现有文档中插入内部文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27922299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com