我最近花了一些时间尝试$pull通过Spring的Data MongoOperations接口使用运算符,所以我认为如果有人碰到类似的问题,分享我的发现会很好.
所以这里......
我有2个java POJO,如下所示:
@Document
public class OutterObject{
private String id;
private String name;
private List<InnerDocument> innerDocs;
//SETTERS - GETTERS Ommited
public class InnerDocument{
private String id;
private String name;
//SETTERS - GETTERS Ommited
Run Code Online (Sandbox Code Playgroud)
这存储在Mongo集合中,如下所示:
"_id" : "doc2",
"_class" : "OutterObject",
"name" : "doc2",
"innerDocs" : [{
"_id" : "innerDoc21",
"name" : "innerDoc21"
}, {
"_id" : "innerDoc22",
"name" : "innerDoc22"
}]
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用$ pull运算符来删除具有名称值="innerDoc22"的innerDoc集合中的所有对象.
我知道如何使用mongo驱动程序完成此操作,如下所示:
List<String> ids =
Arrays.asList("innerDoc22");
BasicDBObject find = new BasicDBObject();
match.put("innerDocs.name",
BasicDBObjectBuilder.start("$in", ids).get()); …Run Code Online (Sandbox Code Playgroud) 我尝试删除嵌入式文档而没有成功.我正在寻找以下指令的java方式:
db.games.update({'_id': 73}, {$pull: {'goals': {'goal': 4}}})
Run Code Online (Sandbox Code Playgroud)