2011-02-08 19 views
99

En la consola MongoDB, ¿cómo puedo eliminar un registro por id? Aquí está mi colección:Eliminar por _id en la consola MongoDB

[ 
    { 
    "_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")}); 

Extracción por su nombre funciona:

db.test_users.remove({"name":"Gazza"}); 

Esto está en el navegador shell en mongodb.org si hace alguna diferencia

Gracias

+1

Debería pensar en darle la respuesta a alguien. – nottinhill

+1

Realmente debería darle la respuesta a alguien. Sugeriría Nic Cottrell –

+0

Ninguna de las soluciones funcionó para mí hasta que agregué una devolución de llamada: db.test_users.remove ({"_id": '4d512b45cc9374271b02ec4f'}, function (err, data) {}); – rttmax

Respuesta

11

Bueno, _ID es un objeto en su ejemplo, por lo que sólo tiene que pasar un objeto

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

Esto debería funcionar

Editar: Añadido detrás paren para asegurar que se compila.

+0

Lo intenté también, no eliminó el registro: db.test_users.remove ({"_id": {"$ oid": "4d513345cc9374271b02ec6c"}}); ps: actualizó la pregunta para mostrar esto –

+0

En su pregunta, dijo que probó esto: db.test_users.remove ({"_id": {"$ oid": new ObjectId ("4d512b45cc9374271b02ec4f")}}); – Dmitri

+0

Sí, actualicé la pregunta ahora mismo, lo intenté y tampoco funcionó. ¿Tal vez esto se deba a que no puedes eliminar en una propiedad secundaria? –

15

La respuesta es que la consola/shell web 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 automóvil genera _id en la concha Web se salvó de esta manera:

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

La misma configuración del documento en su casa y el auto generada _id se salvó de esta manera:

"_id" : ObjectId("4d5192665777000000005490") 

consultas trabajado en contra de este último y sin problema .

+0

¿Está seguro de que se guardan de manera diferente en el documento BSON? Esas diferencias parecen ser que el cliente acaba formateando la salida de forma diferente. –

4

acabo encontré con esto mismo y esta variación trabajado para mí:

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

Muy cerca. Esto funcionará:

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

es decir, que no necesita una nueva para la OBJECTID.

+4

funcionará también sin comillas alrededor de _id db.test_users.remove ({_id: ObjectId ("4d512b45cc9374271b02ec4f")}); – alfonsodev

+0

Intenté esto: TimeAndSpace.remove ({"_id": ObjectId ("8Bd2dZ778LXejYNrL")}); ... y me dieron "ReferenceError no detectada: OBJECTID no está definido en : 2: 13" –

+0

@BClay El ID de objeto espera de entrada hexadecimal (tal vez también en minúsculas) por lo que está fallando en los ejes X, Z, entre otros personajes. –

15

Lo he intentado. Esto está funcionando bien para mí.

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

¿Qué es diferente de la respuesta de @Nic Cottrell? – Sadikhasan

1

solución y Ejemplo:

1- C: \ MongoDB \ Server \ 3.2 \ bin> mongo (no emitir comandos todavía porque no está conectado a ninguna base de datos, sin embargo, sólo está conectado con servidor de base de datos 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 })

ahora ves WriteResult ({ "nRemoved": 1}) es 1 no 0.

Listo.

6

Si desea eliminar por una lista de ID, esto funciona muy bien.

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

primero obtener la función de objeto de la mongodb OBJECTID = require (mongodb) .ObjectID;

entonces se puede llamar _ID con la función de eliminación

"_id": OBJECTID ("4d5192665777000000005490")

1

¿Tiene usted varios nodos mongodb en un conjunto de réplicas?

encontré (estoy usando a través de la cáscara Robomongo GUI mongo, supongo mismo ocurre en otros casos) que la sintaxis correcta de eliminación, es decir

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

... no funciona a menos que esté conectado a la primario nodo del conjunto de réplicas.

Cuestiones relacionadas