Java Spring Mongo向上插入嵌套文档
我是spring框架的新手。我有我的mongo文档,比如Java Spring Mongo向上插入嵌套文档,java,mongodb,spring-mvc,spring-data-mongodb,Java,Mongodb,Spring Mvc,Spring Data Mongodb,我是spring框架的新手。我有我的mongo文档,比如 { "_id" : ObjectId("527242d584ae917d8bd75c7b"), "postTitle" : "Car", "postDesc" : "rent", "owner" : ObjectId("526a588f84aed6f41cca10bd"), "intrest" : [] } 我想要的是搜索具有id的文档 "_id" : ObjectId("527242d584ae
{
"_id" : ObjectId("527242d584ae917d8bd75c7b"),
"postTitle" : "Car",
"postDesc" : "rent",
"owner" : ObjectId("526a588f84aed6f41cca10bd"),
"intrest" : []
}
我想要的是搜索具有id的文档
"_id" : ObjectId("527242d584ae917d8bd75c7b")
并将其更新为
{
"_id" : ObjectId("527242d584ae917d8bd75c7b"),
"postTitle" : "Car",
"postDesc" : "rent",
"owner" : ObjectId("526a588f84aed6f41cca10bd"),
"intrest" : [
{
"userId" : ObjectId("526a587d84aed6f41cca10bc"),
"timestamp" : ISODate("2013-10-31T11:45:25.256Z")
},
{
"userId" : ObjectId("526a587d84aed6f41cca10bc"),
"timestamp" : ISODate("2013-11-31T11:55:25.256a")
}
]
}
我的域名是
@Document
public class Post {
@Id
private ObjectId _id;
private String postTitle;
private String postDesc;
private ObjectId owner=Global.getCurruser();
private List<Intrest> intrest = new ArrayList<Intrest>();
// Getters and setters
}
@Document
public class Intrest {
private ObjectId userId;
private Date timestamp;
// Getters and setters
}
@文档
公营职位{
@身份证
私有对象id;
私有字符串postTitle;
私有字符串postDesc;
private ObjectId owner=Global.getCurruser();
private List intrest=new ArrayList();
//接球手和接球手
}
@文件
公共课兴趣{
私有ObjectId用户id;
私有日期时间戳;
//接球手和接球手
}
要在intrest数组[]中添加或修改条目,我应该编写什么样的upsert
请提供帮助。我不懂java,但您需要做的只是操作员(我真的希望您能找到如何使用java驱动程序实现这一点)
我正在使用spring mongodb。。我就是这么做的
Intrest insertObj = new Insert();
//initilize insert obj here ..
Update args = new Update();
args.addToSet("intrest",insertObj);
Query query = new Query(Criteria.where("id").is("527242d584ae917d8bd75c7b"));
// if u want to do upsert
mongoOperation.findAndModify(query, args, FindAndModifyOptions.options().upsert(true), Post.class);
//if u want to just update
mongoOperation.findAndModify(query, args, Post.class);
我想你打算做的是更新。Upsert将修改与给定查询匹配的文档,如果没有,它将创建一个新文档,其中as update仅在找到时修改文档。是引用您不想执行upsert-您想执行更新。Upsert是指当您想插入一个新文档时—看起来您只是想向现有字段添加新值。
Intrest insertObj = new Insert();
//initilize insert obj here ..
Update args = new Update();
args.addToSet("intrest",insertObj);
Query query = new Query(Criteria.where("id").is("527242d584ae917d8bd75c7b"));
// if u want to do upsert
mongoOperation.findAndModify(query, args, FindAndModifyOptions.options().upsert(true), Post.class);
//if u want to just update
mongoOperation.findAndModify(query, args, Post.class);