2011-02-08 24 views
99

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

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

这里是不工作,我已经试过了命令:

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如果这有什么区别

谢谢

+1

你应该考虑给别人答案。 – nottinhill 2014-08-22 14:32:50

+1

你真的应该给别人答案。我建议Nic Cottrell – 2015-06-03 22:05:06

+0

没有任何解决方案为我工作,直到我添加了一个回调:db.test_users.remove({“_id”:'4d512b45cc9374271b02ec4f'},function(err,data){}); – rttmax 2016-06-13 14:45:56

回答

11

嗯,_id是你的榜样的对象,所以你只需要传递一个对象

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

这应该工作

编辑:添加尾随括号,以确保其编译。

+0

我也试过,它并没有删除记录:db.test_users.remove({“_id”:{“$ oid”:“4d513345cc9374271b02ec6c”}}); ps:更新了这个问题来显示这个 – 2011-02-08 12:41:21

+0

在你的问题中,你说过你试过这个:db.test_users.remove({“_id”:{“$ oid”:new ObjectId(“4d512b45cc9374271b02ec4f”)}}); – Dmitri 2011-02-08 12:42:48

15

答案是mongodb.org上的Web控制台/ shell的行为有所不同,并不像我预期的那样。在家里安装的版本完美无缺地工作,即;自动生成的_id在网络上壳保存这样的:

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

同一文件安装在家里,自动生成的_id保存这样的:

"_id" : ObjectId("4d5192665777000000005490") 

查询工作对后者没有任何问题。

4

我只是碰到了这个自己这种变化为我工作:

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

非常接近。这将工作:

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

即不需要对一个的ObjectId新

15

我试过了。这对我来说工作得很好。

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

解决方案和示例:

1 C:\ MongoDB的\服务器\ 3.2 \ BIN>蒙戈(不要因为你没有连接到任何数据库尚未发出命令的是,你只连接到数据库服务器mongodb)。

2-

show dbs analytics_database 0.000GB local 0.000GB test_database 0.000GB

3-

use test_database switched to db test_database

4-

db.Collection.remove({"_id": ObjectId("5694a3590f6d451c1500002e")}, 1); WriteResult({ "nRemoved" : 1 })

现在你看到写结果({ “nRemoved”:1})是1不是0。

完成。

6

如果你想删除一个ID列表,这很好的作品。

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

第一获取从mongodb的 的ObjectId =需要(mongodb的).ObjectID所述的ObjectID功能;

,那么你可以调用_id与删除功能

“_id”:物件( “4d5192665777000000005490”)

1

你已经在多个副本的mongodb节点设置?

我发现(我通过Robomongo GUI蒙戈外壳采用,我想同样适用在其他情况下)正确删除的语法,即

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

...不行,除非你连接到主副本副本集的节点。