mydata如下所示: -
{
"categories": [
{
"categoryname": "Eletronics",
"categoryId": "89sxop",
"displayname": "Eletronics",
"subcategories": [
{
"subcategoryname": "laptop",
"subcategoryId": "454",
"displayname": "Laptop"
},
{
"subcategoryname": "camera",
"subcategoryId": "sony123",
"displayname": "Camera"
}
]
}
]
}
我想从子类别数组中删除特定对象
我们正在尝试如下代码:-(这是删除类别)
val removingData = $pull(MongoDBObject("categories" -> MongoDBObject("categoryName" -> "Entertainment")))
此代码用于删除特定类别。
但我想从特定类别中删除一个或多个子类别。 subCategory(例如:-i想从mydata中删除相机对象)来自电子类别
预期输出:-(删除相机对象后)
{
"categories": [
{
"categoryname": "Eletronics",
"categoryId": "89sxop",
"displayname": "Eletronics",
"subcategories": [
{
"subcategoryname": "laptop",
"subcategoryId": "454",
"displayname": "Laptop"
}
]
}
]
}
最诚挚的问候 GSY
答案 0 :(得分:0)
您需要使用$pull
运算符,指定subcategories
数组以及用于选择要删除的元素的条件。 $
运算符可用于选择您感兴趣的特定subcategories
元素的categories
数组。有关详细信息,请参阅mongo的Update Array Operators文档。以下内容应该有效:
val query = MongoDBObject("categories.categoryname" -> "Electronics")
val removingData = $pull("categories.$.subcategories" -> MongoDBObject("subcategoryname" -> "camera"))
collection.update(query, removingData)
如果您要删除多个子类别,可以使用$or
运算符指定多个subcategoryname
s