(2020.05.07更新)想在java中直接实现对MongoDB数据库的push,set,pop操作,需要用到MongoTemplate。这里的是利用Spring中自动注入的方式生成实例,你也可以直接new一个对象。重点在于操作语句的写法。
@Autowired
MongoTemplate m;
//set
m.updateMulti(
new Query(Criteria.where("_id").is("你要找的id")),
new Update().set("你要找的属性", "属性要修改的内容"),
java中对应的类.class,
"mongo中对应的数据库表名称"
);
//push
m.updateMulti(
new Query(Criteria.where("_id").is("你要找的id")),
new Update().push("对应的属性",要插入的内容),
java中对应的类.class,
"对应的表名称"
);
//pop
m.updateMulti(
new Query(Criteria.where("_id").is("你要找的id")),
new Update().pop("对应的属性,比如它包含一个数组",Update.Position.FIRST),
java中对应的类.class,
"对应的表名称"
);
对于pop,Update.Position.FIRST对应着删除的是头元素,把FIRST改成LAST就是删除尾部元素。
如果觉得不够形象,就看下面的例子
db.sheets.update(
{"_id":"bombom"},
{$set:{"sheet_name":"csdn666"}}
);
db.sheets.update(
{"_id":"bombom"},
{$push:{"score":[1,2,3,4,5]}}
);
db.sheets.update(
{"_id":"bombom"},
{$push:{"score":12}}
);
db.sheets.update(
{"_id":"bombom"},
{$pop:{"score":-1}}
);
@Document(collection = "sheets") //这里和刚才的表一样,都叫sheets
public class csdn {
@Id
private String id;
private String sheet_name;
private int[][] score;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSheet_name() {
return sheet_name;
}
public void setSheet_name(String sheet_name) {
this.sheet_name = sheet_name;
}
public int[][] getScore() {
return score;
}
public void setScore(int[][] score) {
this.score = score;
}
}
mongoTempalte.updateMulti(
new Query(Criteria.where("_id").is("对应的id")),
new Update().操作符("属性名":操作方式),
对应的java对象.class,
"对应的数据库表的名称"
);
(2020.05.07更新)这里的例子都是在Spring Boot环境下调用的,实际上可以忽略掉除了mongotemplate之外的代码。
@RestController
@RequestMapping("/action")
public class Action {
@Autowired
MongoTemplate mongoTemplate;
@GetMapping("/test")
public void test(){
mongoTemplate.updateMulti(
new Query(Criteria.where("_id").is("bombom")),
new Update().set("sheet_name","csdn888"),
csdn.class,
"sheets"
);
}
}
@RestController
@RequestMapping("/action")
public class Action {
@Autowired
MongoTemplate mongoTemplate;
@GetMapping("/test")
public void test(){
int[] in={9,8,7};
mongoTemplate.updateMulti(
new Query(Criteria.where("_id").is("bombom")),
new Update().push("score",in),
csdn.class,
"sheets"
);
}
}
@RestController
@RequestMapping("/action")
public class Action {
@Autowired
MongoTemplate mongoTemplate;
@GetMapping("/test")
public void test(){
mongoTemplate.updateMulti(
new Query(Criteria.where("_id").is("bombom")),
new Update().pop("score", Update.Position.FIRST),
csdn.class,
"sheets"
);
}