No console do MongoDB, como posso remover um registro por ID? Aqui está minha coleção:
[
{
"_id" : { "$oid" : "4d512b45cc9374271b02ec4f" },
"name" : "Gazza"
},
{
"_id" : { "$oid" : "4d513345cc9374271b02ec6c" },
"name" : "Dave",
"adminOf" : { },
"email" : "[email protected]"
}
]
E aqui estão os comandos que eu tentei que não funcionam:
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")});
A remoção pelo nome funciona:
db.test_users.remove( {"name":"Gazza"});
Isso está no shell do navegador em mongodb.org, se isso faz alguma diferença
obrigado
Respostas:
Muito perto. Isso funcionará:
ou seja, você não precisa de um novo para o ObjectId.
Além disso, observe que em alguns drivers / ferramentas,
remove()
agora está obsoleto edeleteOne
oudeleteMany
deve ser usado.fonte
_id
campo não é gerado automaticamente (ou seja, não é um ObjectId, mas uma String), você pode apenas escrever o valor do_id
sob aspas:db.your.database.remove({"_id": "your value"})
.A resposta é que o console da web / shell em mongodb.org se comporta de maneira diferente e não como eu esperava. Uma versão instalada em casa funcionou perfeitamente sem problemas, ou seja; o _id gerado automaticamente no shell da web foi salvo assim:
A mesma configuração de documento em casa e o _id gerado automaticamente foram salvos assim:
As consultas funcionaram contra o último sem problemas.
fonte
Bem, o _id é um objeto no seu exemplo, então você só precisa passar um objeto
Isso deve funcionar
Edit: Adicionado paren à direita para garantir que ele seja compilado.
fonte
Se você deseja remover por uma lista de IDs, isso funciona muito bem.
fonte
Você tem vários nós mongodb em um conjunto de réplicas?
Descobri (estou usando via Robomongo gui mongo shell, acho que o mesmo se aplica em outros casos) que a sintaxe de remoção correta, ou seja,
... não funciona, a menos que você esteja conectado ao nó principal do conjunto de réplicas.
fonte
Acabei de me deparar com isso e essa variação funcionou para mim:
fonte
primeiro obtenha a função ObjectID do mongodb ObjectId = require (mongodb) .ObjectID;
então você pode chamar o _id com a função delete
"_id": ObjectId ("4d5192665777000000005490")
fonte
Embora esta postagem esteja desatualizada, o collection.remove está obsoleto!
collection.delete_one
deve ser usado em seu lugar!Mais informações podem ser encontradas aqui em #remove
fonte
Suponha que tenhamos essa coleção fictícia:
basta usar:
ele será excluído com isso como resposta:
É isso aí.
fonte
Solução e exemplo:
1- C: \ MongoDB \ Server \ 3.2 \ bin> mongo (não emita comando ainda porque você ainda não está conectado a nenhum banco de dados, você está conectado apenas ao servidor de banco de dados mongodb).
2-
3-
4-
agora você vê WriteResult ({"nRemoved": 1}) é 1 e não 0.
Feito.
fonte