在MongoDB控制台中按_id删除

在MongoDB控制台中按_id删除,mongodb,Mongodb,在MongoDB控制台中,如何按id删除记录?这是我的收藏: [ { "_id" : { "$oid" : "4d512b45cc9374271b02ec4f" }, "name" : "Gazza" }, { "_id" : { "$oid" : "4d513345cc9374271b02ec6c" }, "name" : "Dave", "adminOf" : { }, "email" : "email@email.c

在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"});
如果这有什么区别的话,它就在at的浏览器外壳中


谢谢

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

'db.test_users.remove({"_id": { "$oid" : "4d513345cc9374271b02ec6c" }})'
这应该行得通


编辑:添加了尾部参数以确保它已编译。

答案是mongodb.org上的web控制台/shell的行为与我预期的不同。一个安装在家里的版本工作得很好,没有问题;web shell上自动生成的_id的保存方式如下:

"_id" : { "$oid" : "4d512b45cc9374271b02ec4f" },
"_id" : ObjectId("4d5192665777000000005490")
相同的文档设置和自动生成的_id保存如下:

"_id" : { "$oid" : "4d512b45cc9374271b02ec4f" },
"_id" : ObjectId("4d5192665777000000005490")

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

我自己也遇到过这种情况,这种变化对我很有效:

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

非常接近。这将有助于:

db.test_users.deleteOne( {"_id": ObjectId("4d512b45cc9374271b02ec4f")});
i、 e.ObjectId不需要新的

另外,请注意,在某些驱动程序/工具中,
remove()
现在已被弃用,应改用
deleteOne
deleteMany

解决方案和示例:

1-C:\MongoDB\Server\3.2\bin>mongo(暂时不要发出命令,因为您尚未连接到任何数据库,您只连接到数据库服务器MongoDB)

2-

放映星展 分析_数据库0.000GB 本地0.000GB 测试_数据库0.000GB

3-

使用test\u数据库 切换到db test_数据库

四,-

remove({“_id”:ObjectId(“5694A3590F6D451C150002E”)},1); WriteResult({“nRemoved”:1})

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


完成。

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

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

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

然后可以使用delete函数调用_id


“_id”:ObjectId(“4D519266577700000005490”)

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

我发现(我使用的是via Robomongo gui mongo shell,我想这同样适用于其他情况)正确的删除语法

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

…除非连接到副本集的主节点,否则无法工作。

即使此帖子已过时,collection.remove也不推荐使用
集合。应改用delete\u one


可以找到更多信息

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

{ "_id" : ObjectId("5ea53fedaa79db20d4e14284"), "item" : "planner", "qty" : 75 }
只需使用:

db.inventory.deleteOne({ _id: ObjectId("5ea53fedaa79db20d4e14284") })
它将被删除,并将此作为响应:

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

就是这样。

我也试过了,但没有删除记录:db.test_users.remove({“\u id”:{“$oid”:“4d513345cc9374271b02ec6c”});ps:更新了问题以显示这一点。在您的问题中,您说您尝试了:db.test_users.remove({“_id”:{“$oid”:new ObjectId(“4d512b45cc9374271b02ec4f”)});是的,我刚刚更新了问题谢谢,我两次都试过了,两次都没试过。可能这是因为您无法删除子属性?使用这种方式返回“未知运算符:$oid”,它也可以在_iddb.test_users.remove({u id:ObjectId(“4d512b45cc9374271b02ec4f”)}周围不带引号的情况下工作;我尝试了以下方法:TimeAndSpace.remove({“\u id”:ObjectId(“8bd2dz778lxejnrl”)})。。。我得到,“Uncaught ReferenceError:ObjectId未定义在:2:13”@BClay对象ID需要十六进制输入(也可能是小写),因此它在X、Z字符和其他字符上失败。这是很好的。如果
\u ID
字段不是自动生成的(即它不是ObjectId,而是字符串),您可以将
\u id
的值写在引号下:
db.your.database.remove({“\u id:“your value”})
。您确定它们在文档BSON中的保存方式不同吗?这些差异看起来就像是客户端对输出进行了不同的格式化。在我添加回调之前,所有解决方案都不适用于我:db.test_users.remove({“_id:'4d512b45cc9374271b02ec4f',function(err,data){});我很清楚你是如何成功地在你的收藏中编写这些文档的,我的尝试以“writeError”:{“code”:52,“errmsg”:“$oid对存储无效。”}请解释为什么/如何解决这个问题。看见
db.collection("collection_name").deleteOne({_id:ObjectId("4d513345cc9374271b02ec6c")})