En la consola MongoDB, ¿cómo puedo eliminar un registro por id? Aquí está mi colección:
[
{
"_id" : { "$oid" : "4d512b45cc9374271b02ec4f" },
"name" : "Gazza"
},
{
"_id" : { "$oid" : "4d513345cc9374271b02ec6c" },
"name" : "Dave",
"adminOf" : { },
"email" : "[email protected]"
}
]
Y aquí están los comandos que he probado que no funcionan:
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")});
Eliminar por nombre funciona:
db.test_users.remove( {"name":"Gazza"});
Esto está en el shell del navegador en mongodb.org si eso hace alguna diferencia
Gracias
Respuestas:
Muy cerca. Esto funcionará:
es decir, no necesita una nueva para ObjectId.
Asimismo, cabe destacar que en algunos conductores / herramientas,
remove()
se ha desaprobado y sedeleteOne
odeleteMany
se debe utilizar en su lugar.fuente
_id
campo no se genera de forma automática (es decir, no es un OBJECTID, pero una cadena), sólo puede escribir el valor de la_id
virtud de las comillas:db.your.database.remove({"_id": "your value"})
.La respuesta es que la consola web / shell en mongodb.org se comporta de manera diferente y no como yo esperaba. Una versión instalada en casa funcionó perfectamente sin problemas, es decir; el _id generado automáticamente en el shell web se guardó así:
La misma configuración de documentos en casa y el _id generado automáticamente se guardó así:
Las consultas trabajaron contra este último sin problema.
fuente
Bueno, el _id es un objeto en su ejemplo, por lo que solo necesita pasar un objeto
Esto debería funcionar
Editar: se agregó el par final para asegurarse de que se compila.
fuente
Si desea eliminar por una lista de ID, esto funciona muy bien.
fuente
¿Tiene múltiples nodos mongodb en un conjunto de réplicas?
Encontré (estoy usando a través de Robomongo gui mongo shell, supongo que lo mismo se aplica en otros casos) que la sintaxis de eliminación correcta, es decir
... no funciona a menos que esté conectado al nodo primario del conjunto de réplicas.
fuente
Acabo de encontrarme con esto y esta variación funcionó para mí:
fuente
primero obtenga la función ObjectID del mongodb ObjectId = require (mongodb) .ObjectID;
entonces puedes llamar al _id con la función de borrar
"_id": ObjectId ("4d5192665777000000005490")
fuente
Aunque esta publicación no está actualizada, collection.remove está en desuso.
collection.delete_one
debe usarse en su lugar!Puede encontrar más información aquí en #remove
fuente
Supongamos que tenemos esta colección ficticia:
simplemente use:
se eliminará con esto como respuesta:
Eso es.
fuente
Solución y ejemplo:
1- C: \ MongoDB \ Server \ 3.2 \ bin> mongo (no emita el comando todavía porque aún no está conectado a ninguna base de datos, solo está conectado al servidor de base de datos mongodb).
2-
3-
4-
ahora ve que WriteResult ({"nRemoved": 1}) es 1, no 0.
Hecho.
fuente