Ответ 1
Очень близко. Это будет работать:
db.test_users.remove( {"_id": ObjectId("4d512b45cc9374271b02ec4f")});
то есть. вам не нужен новый для ObjectId.
В консоли MongoDB как удалить запись по идентификатору? Здесь моя коллекция:
[
{
"_id" : { "$oid" : "4d512b45cc9374271b02ec4f" },
"name" : "Gazza"
},
{
"_id" : { "$oid" : "4d513345cc9374271b02ec6c" },
"name" : "Dave",
"adminOf" : { },
"email" : "[email protected]"
}
]
И вот команды, которые я пробовал, которые не работают:
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"});
Это в оболочке браузера на mongodb.org, если это имеет значение
Спасибо
Очень близко. Это будет работать:
db.test_users.remove( {"_id": ObjectId("4d512b45cc9374271b02ec4f")});
то есть. вам не нужен новый для ObjectId.
Ответ заключается в том, что веб-консоль/оболочка на mongodb.org ведет себя по-другому и не так, как я ожидал. Установленная версия дома отлично работала без проблем, т.е. автоматически созданный _id в веб-оболочке был сохранен следующим образом:
"_id" : { "$oid" : "4d512b45cc9374271b02ec4f" },
Та же самая настройка документа у себя дома и автоматически сгенерированная _id была сохранена следующим образом:
"_id" : ObjectId("4d5192665777000000005490")
Запросы, обработанные против последнего без проблем.
Я пробовал. Это отлично работает для меня.
db.test_users.remove( {"_id": ObjectId("4d512b45cc9374271b02ec4f")});
Ну, _id - это объект в вашем примере, поэтому вам просто нужно передать объект
'db.test_users.remove({"_id": { "$oid" : "4d513345cc9374271b02ec6c" }})'
Это должно работать
Edit: добавлен трейлинг-пар, чтобы скомпилировать его.
Если вы хотите удалить список идентификаторов, это отлично работает.
db.CollectionName.remove({
"_id": {
$in: [
ObjectId("0930292929292929292929"),
ObjectId("0920292929292929292929")
]
}
})
Я только что наткнулся на это сам, и этот вариант работал у меня:
db.foo.remove({**_id**: new ObjectId("4f872685a64eed5a980ca536")})
У вас есть несколько узлов mongodb в наборе реплик?
Я нашел (я использую оболочку robomongo gui mongo, я полагаю, что в других случаях применяется то же самое), что правильный синтаксис удаления, т.е.
db.test_users.remove({"_id": ObjectId("4d512b45cc9374271b02ec4f")})
... не работает, если вы не подключены к первичному node набора реплик.
сначала получить функцию ObjectID от mongodb ObjectId = require (mongodb).ObjectID;
то вы можете вызвать _id с помощью функции удаления
"_ id": ObjectId ( "4d5192665777000000005490" )
Решение и пример:
1- C:\MongoDB\Server\3.2\bin > mongo (еще не выдавать команду, потому что вы еще не подключены к какой-либо базе данных, вы подключены только к серверу базы данных mongodb).
2-
показать dbs analytics_database 0.000GB локальный 0.000GB test_database 0.000GB
3-
использовать test_database переключился на db test_database
4 -
db.Collection.remove({ "_ id": ObjectId ( "5694a3590f6d451c1500002e" )}, 1); WriteResult ({ "nRemoved": 1})
теперь вы видите WriteResult ({ "nRemoved": 1}) равно 1 не 0.
Готово.
Несмотря на то, что этот пост устарел, collection.remove устарел! Вместо этого следует использовать collection.delete_one
!
Больше информации можно найти здесь под #remove