0

以下のようにmongoドキュメントを持っています

  "_id" : ObjectId("5072b33aa4e8dd3e359b8e94"), 
  "menus" : { 
    "5072b8dda4e8dd3e359b8ea8" :
     { 
        "_id" : ObjectId("5072b8dda4e8dd3e359b8ea8"), 
        "description" : "hfghfgh",
         "MenuItems" : 
            [   
                {   
                "name" : "dfgdfg",  
                "description" : "dgdfgd", 
                "_id" : ObjectId("5072b91ba4e8dd3e359b8eaa")
                 },     
                { 
                "name" : "fgdfgdf",     
                "description" : "gdfgg",
                 "_id" : ObjectId("5072bb92a4e8204e51de1084") 
                }
            ]
    }
}

実際、 menuItemsで次のオブジェクトを削除しようとしました

    { 
    "name" : "fgdfgdf",     
    "description" : "gdfgg",
    "_id" : ObjectId("5072bb92a4e8204e51de1084") 
    }

私のクエリは次のとおりですが、機能していません。

 BasicDBObject query=new BasicDBObject("_id",objectId("...");

  BasicDBObject document = new     BasicDBObject("menus.5072b8dda4e8dd3e359b8ea8.menuItems.$._id", ObjectId("5072bb92a4e8204e51de1084") );
  BasicDBObject updateOps=new BasicDBObject("$pull", document);

menuItemsの ID "_id" : ObjectId("5072bb92a4e8204e51de1084") 、メニューの ID "_id" : ObjectId("5072b8dda4e8dd3e359b8ea8") および最上位ドキュメントの ID "_id" : ObjectId("5072b33aa4e8dd3e359b8e94") を持っています。

4

1 に答える 1

0
 BasicDBObject query=new BasicDBObject("_id",new ObjectId(".....");

BasicDBObject document = new BasicDBObject("menus.5072b8dda4e8dd3e359b8ea8.menuItems",
new  BasicDBObject("_id":ObjectId("5072bb92a4e8204e51de1084") );

BasicDBObject updateOps=new BasicDBObject("$pull", document);

 db.collection.update(query,updateOps);
于 2012-10-08T13:45:46.157 に答える