Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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 删除mongodb中的特定嵌入对象_Java_Mongodb - Fatal编程技术网

Java 删除mongodb中的特定嵌入对象

Java 删除mongodb中的特定嵌入对象,java,mongodb,Java,Mongodb,这是我的java程序: try { MongoClient mongoClient = null; mongoClient = new MongoClient( "localhost" , 27017); DB db = mongoClient.getDB("SchoolProject"); boolean auth = db.authenticate("root", "root@123".toCharArray()); System.out.printl

这是我的java程序:

try {
    MongoClient mongoClient = null;
    mongoClient = new MongoClient( "localhost" , 27017);
    DB db = mongoClient.getDB("SchoolProject");
    boolean auth = db.authenticate("root", "root@123".toCharArray());
    System.out.println(auth);

    if(auth==true){
        DBCollection table = db.getCollection("Bus_route");
        BasicDBObject query = new BasicDBObject();
        query.put("BusId", "BUS_101");
        BasicDBObject data = new BasicDBObject();
        data.put("Route.$.stop_name", "hyderabad");
        data.put("Route.$.arrival_time", "1:05");
        BasicDBObject command = new BasicDBObject();
        command.put("$unset", data);

        table.update(query, command);
    }
} catch (Exception e) {
    // TODO Auto-generated catch block
    System.out.println(e.getMessage());
}
和mongodb文件:

"BusId" : "BUS_101",
"DriverName" : "Alex",
"Route" : [
    {
        "stop_name" : "st. John Road",
        "arrival_time" : "10:30"
    },
    {
        "stop_name" : "hyderabad",
        "arrival_time" : "1:05"
    }
],
"SchoolName" : "St. John Paul",
"VehicleNo" : "A20y6757",
"_id" : ObjectId("529f093cdaa62b1b10b82cc1")
及 文件名称:巴士路线

删除mongodb中的特定嵌入对象 如何在不删除其他对象的情况下删除数组路由中名为hyderabad的对象

在我从这个论坛得到帮助后,我得到了它,下面是代码

DBCollection table = db.getCollection("Bus_route");

BasicDBObject query = new BasicDBObject();
query.put("BusId", "BUS_101");

BasicDBObject data = new BasicDBObject();
data.put("stop_name", "hyderabad");

BasicDBObject command = new BasicDBObject();
command.put("$pull", new BasicDBObject("Route", data));

table.update(query,  command);

您必须使用$pull操作符()进行更新我使用了$pull投影而不是$unset,但是我得到了错误,因为如果没有包含array.db.Bus_route.update的相应查询字段,就无法应用位置操作符({BusId:'Bus_101},{$pull:{'route':{'stop_name':'hydrabad'})