如何使用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 } )