在MongoDB控制台中通过_id删除

时间:2011-02-08 12:23:25

标签: mongodb

在MongoDB控制台中,如何通过id删除记录?这是我的收藏:

[ 
  {
     "_id" : { "$oid" : "4d512b45cc9374271b02ec4f" },
     "name" : "Gazza"
  },
  {
     "_id" : { "$oid" : "4d513345cc9374271b02ec6c" },
     "name" : "Dave",
     "adminOf" : { },
     "email" : "email@email.com"
  }
]

以下是我尝试过的不起作用的命令:

db.test_users.remove( {"_id":{"$oid":new ObjectId("4d512b45cc9374271b02ec4f")}});
db.test_users.remove( {"_id":{"$oid":"4d513345cc9374271b02ec6c"}});
db.test_users.remove( {"_id":"4d512b45cc9374271b02ec4f"});
db.test_users.remove( {"_id":new ObjectId("4d512b45cc9374271b02ec4f")});

按姓名删除有效:

db.test_users.remove( {"name":"Gazza"});

这是在mongodb.org的浏览器外壳中,如果这有任何区别

由于

11 个答案:

答案 0 :(得分:244)

非常接近。这将有效:

db.test_users.remove( {"_id": ObjectId("4d512b45cc9374271b02ec4f")});

即。对于ObjectId,您不需要 new

答案 1 :(得分:16)

答案是mongodb.org上的web控制台/ shell表现不同,而不是我预期的那样。在家安装的版本完美无故障,即; Web shell上自动生成的_id保存如下:

"_id" : { "$oid" : "4d512b45cc9374271b02ec4f" },

在家中设置相同的文档,自动生成的_id保存如下:

"_id" : ObjectId("4d5192665777000000005490")

查询对后者起作用没有问题。

答案 2 :(得分:12)

嗯,_id是你示例中的一个对象,所以你只需要传递一个对象

'db.test_users.remove({"_id": { "$oid" : "4d513345cc9374271b02ec6c" }})'

这应该有效

编辑:添加了跟踪paren以确保它已编译。

答案 3 :(得分:8)

如果您想通过ID列表删除,那么效果很好。

db.CollectionName.remove({
    "_id": {
        $in: [
            ObjectId("0930292929292929292929"),
            ObjectId("0920292929292929292929")
        ]
     }
}) 

答案 4 :(得分:4)

我刚刚碰到了这个,这种变化对我有用:

db.foo.remove({**_id**: new ObjectId("4f872685a64eed5a980ca536")})

答案 5 :(得分:4)

副本集中是否有多个mongodb节点?

我发现(我使用的是通过Robomongo gui mongo shell,我认为在其他情况下同样适用)正确的删除语法,即

StringHelper.concatenateValues
除非您连接到副本集的节点,否则

...不起作用。

答案 6 :(得分:3)

首先从mongodb获取ObjectID函数 ObjectId = require(mongodb).ObjectID;

然后您可以使用删除功能

调用_id

" _id" :ObjectId(" 4d5192665777000000005490")

答案 7 :(得分:2)

假设我们有这个虚拟集合:

{ "_id" : ObjectId("5ea53fedaa79db20d4e14284"), "item" : "planner", "qty" : 75 }

只需使用:

db.inventory.deleteOne({ _id: ObjectId("5ea53fedaa79db20d4e14284") })

它将作为响应而被删除:

{ "acknowledged" : true, "deletedCount" : 1 }

就这样。

答案 8 :(得分:1)

db.collection("collection_name").deleteOne({_id:ObjectID("4d513345cc9374271b02ec6c")})

答案 9 :(得分:0)

解决方案和示例:

1- C:\ MongoDB \ Server \ 3.2 \ bin> mongo(由于您尚未连接到任何数据库,因此尚未发出命令,您只连接到数据库服务器mongodb)。

2-

  

显示dbs   analytics_database 0.000GB   本地0.000GB   test_database 0.000GB

3-

  

使用test_database   切换到db test_database

4 -

  

db.Collection.remove({“_ id”:ObjectId(“5694a3590f6d451c1500002e”)},1);   WriteResult({“nRemoved”:1})

现在你看到WriteResult({“nRemoved”:1})是1而不是0。

完成。

答案 10 :(得分:0)

即使该帖子已过时,也已弃用 collection.remove!!应该使用collection.delete_one

可以找到更多信息here under #remove