在MongoDB控制台中通过_id删除

Typ*_*son 124 mongodb

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

[ 
  {
     "_id" : { "$oid" : "4d512b45cc9374271b02ec4f" },
     "name" : "Gazza"
  },
  {
     "_id" : { "$oid" : "4d513345cc9374271b02ec6c" },
     "name" : "Dave",
     "adminOf" : { },
     "email" : "email@email.com"
  }
]
Run Code Online (Sandbox Code Playgroud)

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

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")});
Run Code Online (Sandbox Code Playgroud)

按名称删除有效:

db.test_users.remove( {"name":"Gazza"});
Run Code Online (Sandbox Code Playgroud)

这是在mongodb.org上的浏览器shell中,如果这有任何区别的话

谢谢

Nic*_*ell 253

很接近.这将有效:

db.test_users.remove( {"_id": ObjectId("4d512b45cc9374271b02ec4f")});
Run Code Online (Sandbox Code Playgroud)

即,您不需要ObjectId 的新内容.

  • 它也可以在没有引号的情况下使用_id db.test_users.remove({_ id:ObjectId("4d512b45cc9374271b02ec4f")}); (4认同)
  • 这是_didiculous. (2认同)

Typ*_*son 16

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

"_id" : { "$oid" : "4d512b45cc9374271b02ec4f" },
Run Code Online (Sandbox Code Playgroud)

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

"_id" : ObjectId("4d5192665777000000005490")
Run Code Online (Sandbox Code Playgroud)

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


Dmi*_*tri 12

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

'db.test_users.remove({"_id": { "$oid" : "4d513345cc9374271b02ec6c" }})'
Run Code Online (Sandbox Code Playgroud)

这应该工作

编辑:添加尾随paren以确保它已编译.


mjw*_*zor 11

如果您想通过ID列表删除,这非常有用.

db.CollectionName.remove({
    "_id": {
        $in: [
            ObjectId("0930292929292929292929"),
            ObjectId("0920292929292929292929")
        ]
     }
}) 
Run Code Online (Sandbox Code Playgroud)


Kar*_*roy 6

我自己刚刚遇到了这个问题,这个变化对我有用:

db.foo.remove({**_id**: new ObjectId("4f872685a64eed5a980ca536")})
Run Code Online (Sandbox Code Playgroud)


小智 6

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

然后你可以用删除函数调用_id

"_id" : ObjectId("4d5192665777000000005490")


Ane*_*pic 6

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

我发现(我通过Robomongo gui mongo shell使用,我猜在其他情况下也是如此)正确的删除语法,即

db.test_users.remove({"_id": ObjectId("4d512b45cc9374271b02ec4f")})
Run Code Online (Sandbox Code Playgroud)

...除非您连接到副本集的节点,否则它不起作用。


小智 5

db.collection("collection_name").deleteOne({_id:ObjectId("4d513345cc9374271b02ec6c")})
Run Code Online (Sandbox Code Playgroud)