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