2015-07-13 193 views
0

我有一个MongoDB的文件是这样的:如何从MongoDB文档中删除嵌套对象的属性?

{ 
    "_id": ObjectId("5589044a7019e802d3e9dbc5"), 
    "sessionId": LUUID("f49d4280-ced0-9246-a3c9-a63e68e1ed45"), 
    "teamId": LUUID("6ef7d1a8-f842-a54c-bd8c-daf6481f9cfc"), 
    "variableId": LUUID("59d1b512-eee2-6c4b-a5b5-dda546872f55"), 
    "values": { 
     "725400": 691.0000000000000000, 
     "725760": 686.0000000000000000, 
     "726120": 683.0000000000000000, 
     "726480": 681.0000000000000000, 
     "726840": 679.0000000000000000, 
     "727200": 678.0000000000000000, 
     "727560": 677.0000000000000000, 
     "727920": 676.0000000000000000 
    }, 
    "variableType": 2, 
    "isSet": false, 
    "teamNumber": 2, 
    "simPageIds": [] 
} 

我有一种情况,我必须从我的文档的"values"属性中删除特定的属性。例如,我想从"values"属性中删除值"727920"

由于"Values"不是数组,我不能在这里使用$pull。我需要的是删除

"727920" : 676.0000000000000000"values"

什么是正确的方法来做到这一点?

回答

6

使用$unset如下:

db.collectionName.update({},{"$unset":{"values.727920":""}}) 

编辑 更新多个文档使用update options,如:

db.collectionName.update({},{"$unset":{"values.727920":""}},{"multi":true}) 
+0

它的工作原理@yogesh。谢谢。但是我的收藏中完全有超过50个文件。但是,当我执行上述查询时,第一个文档只被更新。我必须做什么才能更新我收藏中的所有文档? – Sam

+1

@Samuel检查编辑答案使用mongo'multi:true' – Yogesh

+0

它工作在@yogesh。谢谢 – Sam