简体   繁体   English

如何在Mongo中使用Java添加和删除数组中的元素?

[英]How to add and remove elements in array in Mongo use Java?

So I have object: 所以我有一个对象:

"_id" : 1,
"employee_id" : [2, 3, 4, 5],
"project_name" : "qwerty"

And I want to delete from "employee_id" array [3, 5] and add new array [13, 6, 8] . 我想从"employee_id"数组[3, 5]删除并添加新数组[13, 6, 8] And result will be: 结果将是:

"_id" : 1,
"employee_id" : [2, 4, 13, 6, 8],
"project_name" : "qwerty"

I use this Java-code: 我使用这个Java代码:

DB database = mongoClient.getDB("employee_service");
DBCollection collectionProject = database.getCollection("project");

DBObject query = new BasicDBObject();
query.put("_id", project.getId());

DBObject projectMongoObject = new BasicDBObject();
projectMongoObject.put("project_name", project.getProjectName());

//something
collectionProject.update(query, projectMongoObject);

So how to set in projectMongoObject new array and delete array? 那么如何在projectMongoObject设置新数组并删除数组?

Make use of the $pullAll operator to remove the fields, and the combination of $push and $each to add new fields to the array. 利用$ pullAll运算符删除字段,以及$ push和$ each的组合, 数组添加新字段。

   DBObject query = new BasicDBObject();
   query.put("_id", project.getId());   
   DBObject projectMongoObject = new BasicDBObject();
   projectMongoObject.put("$set", new BasicDBObject("project_name",
                                                     project.getProjectName()));
   projectMongoObject.put("$pullAll", 
                          new BasicDBObject("employee_id", new int[]{3,5}));
   collectionProject.update(query, projectMongoObject);
   projectMongoObject = new BasicDBObject();
   projectMongoObject.put("$push", 
                            new BasicDBObject("employee_id",
                                              new BasicDBObject("$each",
                                                            new int[]{13,6,8})));
   collectionProject.update(query, projectMongoObject);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM