2012-10-08 27 views
0

我有蒙戈文件如下如何構建basicdbobject查詢以刪除深層數組documnet?

"_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") 
       } 
      ] 
    } 
} 

其實我曾試圖刪除下列對象在的菜單項

{ 
    "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); 

我爲的菜單項 「_id」 ID:物件( 「5072bb92a4e8204e51de1084」)的菜單 「_id」 ID:物件( 「5072b8dda4e8dd3e359b8ea8」)和頂層文件 「_id」 ID:物件( 「5072b33aa4e8dd3e359b8e94」),

+0

你的問題就沒有意義了。請儘量做得更清楚,否則你的問題很可能會被封閉 –

回答

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);