如何使用MongoDB从embedded到数组中的文件中删除属性?

在MongoDB 2.4中使用本地Nodejs驱动程序,并尝试从embedded在数组中的文档中移除属性。 例如,如何从gym 562e7c1ae6c3e8ce29abfe05 grades数组中embedded的文件中删除gym ? 所以从这个:

 { "_id" : ObjectId("562abaaffb5870b8fb9dca3f"), "grades" : [ { "_id" : ObjectId("562e7bbe70ee82bb290192bd"), "discipline" : "55aae5b7848b9c8bf4ecbb5c", "grade" : "55aae5b7848b9c8bf4ecbb4c", "gym" : "562e7c1ae6c3e8ce29abfe06", "registeredOn" : ISODate("2015-10-26T19:15:10.565Z") }, { "discipline" : "55aae5b7848b9c8bf4ecbb5c", "grade" : "55aae5b7848b9c8bf4ecbb4d", "gym" : "562e7c1ae6c3e8ce29abfe05", "registeredOn" : ISODate("2015-10-26T19:17:08.603Z"), "_id" : ObjectId("562e7c34e6c3e8ce29abfe06") } ], }, { "_id" : ObjectId("562abaaffb5870b8fb9dca3f"), "grades" : [ { "_id" : ObjectId("562e7bbe70ee82bb290192bd"), "discipline" : "55aae5b7848b9c8bf4ecbb5c", "grade" : "55aae5b7848b9c8bf4ecbb4c", "gym" : "562e7c1ae6c3e8ce29abfe07", "registeredOn" : ISODate("2015-10-26T19:15:10.565Z") }, { "discipline" : "55aae5b7848b9c8bf4ecbb5c", "grade" : "55aae5b7848b9c8bf4ecbb4d", "gym" : "562e7c1ae6c3e8ce29abfe05", "registeredOn" : ISODate("2015-10-26T19:17:08.603Z"), "_id" : ObjectId("562e7c34e6c3e8ce29abfe06") } ], } 

我需要这个:

 { "_id" : ObjectId("562abaaffb5870b8fb9dca3f"), "grades" : [ { "_id" : ObjectId("562e7bbe70ee82bb290192bd"), "discipline" : "55aae5b7848b9c8bf4ecbb5c", "grade" : "55aae5b7848b9c8bf4ecbb4c", "gym" : "562e7c1ae6c3e8ce29abfe06", "registeredOn" : ISODate("2015-10-26T19:15:10.565Z") }, { "discipline" : "55aae5b7848b9c8bf4ecbb5c", "grade" : "55aae5b7848b9c8bf4ecbb4d", "registeredOn" : ISODate("2015-10-26T19:17:08.603Z"), "_id" : ObjectId("562e7c34e6c3e8ce29abfe06") } ], }, { "_id" : ObjectId("562abaaffb5870b8fb9dca3f"), "grades" : [ { "_id" : ObjectId("562e7bbe70ee82bb290192bd"), "discipline" : "55aae5b7848b9c8bf4ecbb5c", "grade" : "55aae5b7848b9c8bf4ecbb4c", "gym" : "562e7c1ae6c3e8ce29abfe07", "registeredOn" : ISODate("2015-10-26T19:15:10.565Z") }, { "discipline" : "55aae5b7848b9c8bf4ecbb5c", "grade" : "55aae5b7848b9c8bf4ecbb4d", "registeredOn" : ISODate("2015-10-26T19:17:08.603Z"), "_id" : ObjectId("562e7c34e6c3e8ce29abfe06") } ], } 

没有什么似乎工作,最接近我有我需要的是:

 collections.users.update({ "grades.gym": { $exists: true } }, { $unset: { "grades.$.gym": "562e7c1ae6c3e8ce29abfe05" } }, { multi: true }) 

只需将embedded式文档字段指向更新查询:

 db.users.update( { "grades.gym": "562e7c1ae6c3e8ce29abfe05" }, { "$unset": { "grades.$.gym": "562e7c1ae6c3e8ce29abfe05" } }, { "multi": true } )