2015-10-26 53 views
1

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

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

回答

1

仅仅指向嵌入文档场作为您的更新查询:

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