Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Mongo向上插入嵌套文档_Java_Mongodb_Spring Mvc_Spring Data Mongodb - Fatal编程技术网

Java 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

我是spring框架的新手。我有我的mongo文档,比如

{
    "_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);