如何使用mongodb删除数组内某个对象内部的对象

我们假设这是我的数据:

{ "_id" : ObjectId("52892936b996cc760d000002"), "created_at" : ISODate("2013-11-17T20:38:14.248Z"), "name" : "Two", "subcategories" : [ { "subcategory" : "Alpha", "products" : [ { "name" : "Product 5", "primary_price" : "2", "secondary_price" : "3", "created_at" : "Sun Nov 17 2013 20:39:20 GMT+0000 (GMT)" }, { "name" : "Product 7", "primary_price" : "2", "secondary_price" : "3", "created_at" : "Sun Nov 17 2013 20:39:31 GMT+0000 (GMT)" } ] }, { "subcategory" : "Bravo", "products" : [ { "name" : "Product 6", "primary_price" : "2", "secondary_price" : "3", "created_at" : "Sun Nov 17 2013 20:39:26 GMT+0000 (GMT)" }, { "name" : "Product 8", "primary_price" : "2", "secondary_price" : "3", "created_at" : "Sun Nov 17 2013 20:39:38 GMT+0000 (GMT)" }, { "name" : "Apple", "primary_price" : "5", "secondary_price" : "13", "created_at" : "Sat Nov 23 2013 12:00:18 GMT+0000 (GMT)" }, { "name" : "Lemon", "primary_price" : "9", "secondary_price" : "13", "created_at" : "Sat Nov 23 2013 12:00:32 GMT+0000 (GMT)" } ] } ] 

}

我想删除“产品5”我怎样才能做到这一点与mongo(希望没有循环和/或做任何数据转换?

我试过这里描述的方法: 如何从MongoDB中的数组对象中删除特定的对象

这里从MongoDB中的对象数组中删除单个对象

这里Mongodb更新子arrays内的操作

我假设它没有工作的原因是因为我的对象是双重嵌套的。 我一直在试图find一个解决scheme,我提出的数据操作,我宁愿避免。

帮助/build议将不胜感激。

你链接到的第一个问题基本上是同一个问题。 我不知道你尝试了什么,但是这将工作(在shell中):

 db.test.update( { "_id" : ObjectId("52892936b996cc760d000002"), 'subcategories.subcategory': 'Alpha' }, {$pull: {'subcategories.$.products': {name: 'Product 5'}}}) 

查询对象通过$运算符标识要products$pullsubcategory元素。