Database 删除mongodb中的集合
我在mongodb中有以下json文件:Database 删除mongodb中的集合,database,mongodb,Database,Mongodb,我在mongodb中有以下json文件: { "_id" : ObjectId("59de156faf75d539b47e8db3"), "user" : "user1", "item" : { "32a1fsd32asfd65asdf65" : { ... }, "32a1fsd32asfd555" : { }, ... } } 我想执行查询并删除这两项中的一项。事实上,我的数据库包含几个用户。因此,为了从mongodb中检索特定的一个,
{
"_id" : ObjectId("59de156faf75d539b47e8db3"),
"user" : "user1",
"item" : {
"32a1fsd32asfd65asdf65" : {
...
},
"32a1fsd32asfd555" : {
}, ...
}
}
我想执行查询并删除这两项中的一项。事实上,我的数据库包含几个用户。因此,为了从mongodb中检索特定的一个,我执行以下操作:
如何检索特定项并删除其所有字段(例如32a1fsd32asfd65asdf65)?根据文档中提供的示例文档,您似乎希望删除子文档
项的属性
您可以使用“更新”操作符:
db.getCollection('colName').update(
// find a specific document
{user: 'user1'},
// unset the attribute named "sfd65asdf65"
{$unset: {'item.sfd65asdf65': 1}}
)
鉴于问题中提供的文档,上述命令将导致该文档更新为:
{
"_id" : ObjectId("59de156faf75d539b47e8db3"),
"user" : "user1",
"item" : {
"sd32asfd555" : {
...
}
}
}
如果要完全删除项
属性,请运行:
db.getCollection('colName').update(
// find a specific document
{user: 'user1'},
// unset the attribute named "32a1fsd32asfd65asdf65"
{$unset: {'item': 1}}
)
如果要清空项
属性(即删除其所有属性,但保留项
属性),则可以运行以下命令:
db.getCollection('colName').update(
// find a specific document
{user: 'user1'},
// overwrite the "item" attribute with an empty sub document
{$set: {'item': {}}}
)
您可以找到更多示例。根据文档中提供的示例文档,您似乎希望删除子文档项的属性
您可以使用“更新”操作符:
db.getCollection('colName').update(
// find a specific document
{user: 'user1'},
// unset the attribute named "sfd65asdf65"
{$unset: {'item.sfd65asdf65': 1}}
)
鉴于问题中提供的文档,上述命令将导致该文档更新为:
{
"_id" : ObjectId("59de156faf75d539b47e8db3"),
"user" : "user1",
"item" : {
"sd32asfd555" : {
...
}
}
}
如果要完全删除项
属性,请运行:
db.getCollection('colName').update(
// find a specific document
{user: 'user1'},
// unset the attribute named "32a1fsd32asfd65asdf65"
{$unset: {'item': 1}}
)
如果要清空项
属性(即删除其所有属性,但保留项
属性),则可以运行以下命令:
db.getCollection('colName').update(
// find a specific document
{user: 'user1'},
// overwrite the "item" attribute with an empty sub document
{$set: {'item': {}}}
)
您可以找到更多示例。假设我们有一些用户:
> db.test.insert( { _id: 1, user: "bob", field1: 1, field2 :{ field3 : 2 } } )
WriteResult({ "nInserted" : 1 })
> db.test.insert( { _id: 2, user: "fred", field1: 1, field2 :{ field3 : 2 } } )
WriteResult({ "nInserted" : 1 })
然后,我们可以使用replaceOne
查找用户,然后只替换整个文档,从而删除该文档中的所有字段:
> db.test.replaceOne( { user: "bob"}, { user: "bob" } )
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
那么我们的新文档将如下所示:
> db.test.find()
{ "_id" : 1, "user" : "bob" }
{ "_id" : 2, "user" : "fred", "field1" : 1, "field2" : { "field3" : 2 } }
假设我们有一些用户:
> db.test.insert( { _id: 1, user: "bob", field1: 1, field2 :{ field3 : 2 } } )
WriteResult({ "nInserted" : 1 })
> db.test.insert( { _id: 2, user: "fred", field1: 1, field2 :{ field3 : 2 } } )
WriteResult({ "nInserted" : 1 })
然后,我们可以使用replaceOne
查找用户,然后只替换整个文档,从而删除该文档中的所有字段:
> db.test.replaceOne( { user: "bob"}, { user: "bob" } )
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
那么我们的新文档将如下所示:
> db.test.find()
{ "_id" : 1, "user" : "bob" }
{ "_id" : 2, "user" : "fred", "field1" : 1, "field2" : { "field3" : 2 } }
项目和id是否需要撇号?我还需要id变量吗?我试过了,但没有成功。我收到:无法将$pull应用于非数组值能否更新您的问题以包含示例文档(而不是显示文档部分的屏幕截图)?如果我有一个示例文档要处理,那么提供完整的答案会更容易。是的,已经用json文件更新了图像。例如,我想删除名为“32a1fsd32asfd65asdf65”的项,但仍然不确定是否需要撇号,例如,我试图将其用于您的代码:{item:{“32a1fsd32asfd65asdf65”},但它不起作用。此:{item:{“32a1fsd32asfd65asdf65”}如果项包含值为“32a1fsd32asfd65asdf65”的字符串属性,则为真。但项实际上是一个子文档,而不是字符串。另外,在粘贴示例文档后重新阅读了您的问题,现在很清楚您处理的是子文档而不是数组,因此我相应地更新了答案。为之前的混淆道歉。item和id是否需要撇号?我还需要id变量吗?我试过了,但没有成功。我收到:无法将$pull应用于非数组值能否更新您的问题以包含示例文档(而不是显示文档部分的屏幕截图)?如果我有一个示例文档要处理,那么提供完整的答案会更容易。是的,已经用json文件更新了图像。例如,我想删除名为“32a1fsd32asfd65asdf65”的项,但仍然不确定是否需要撇号,例如,我试图将其用于您的代码:{item:{“32a1fsd32asfd65asdf65”},但它不起作用。此:{item:{“32a1fsd32asfd65asdf65”}如果项包含值为“32a1fsd32asfd65asdf65”的字符串属性,则为真。但项实际上是一个子文档,而不是字符串。另外,在粘贴示例文档后重新阅读了您的问题,现在很清楚您处理的是子文档而不是数组,因此我相应地更新了答案。为之前的混乱道歉。