Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 删除mongodb中的集合_Database_Mongodb - Fatal编程技术网

Database 删除mongodb中的集合

Database 删除mongodb中的集合,database,mongodb,Database,Mongodb,我在mongodb中有以下json文件: { "_id" : ObjectId("59de156faf75d539b47e8db3"), "user" : "user1", "item" : { "32a1fsd32asfd65asdf65" : { ... }, "32a1fsd32asfd555" : { }, ... } } 我想执行查询并删除这两项中的一项。事实上,我的数据库包含几个用户。因此,为了从mongodb中检索特定的一个,

我在mongodb中有以下json文件:

{
"_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”的字符串属性,则
为真。但项实际上是一个子文档,而不是字符串。另外,在粘贴示例文档后重新阅读了您的问题,现在很清楚您处理的是子文档而不是数组,因此我相应地更新了答案。为之前的混乱道歉。