Удалить с помощью _id в консоли MongoDB - PullRequest
122 голосов
/ 08 февраля 2011

В консоли MongoDB как удалить запись по идентификатору?Вот моя коллекция:

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

Это в оболочке браузера на mongodb.org , если это что-то меняет

Спасибо

Ответы [ 9 ]

249 голосов
/ 14 апреля 2012

Очень близко. Это будет работать:

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

т.е. вам не нужен новый для ObjectId.

16 голосов
/ 08 февраля 2011

Ответ заключается в том, что веб-консоль / оболочка на mongodb.org ведет себя иначе, чем я ожидал.Установленная версия дома работала отлично без проблем т.е.автоматически сгенерированный _id в веб-оболочке был сохранен следующим образом:

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

Те же настройки документа дома и автоматически сгенерированный _id были сохранены следующим образом:

"_id" : ObjectId("4d5192665777000000005490")

Запросы работали противпоследний без проблем.

12 голосов
/ 08 февраля 2011

Ну, _id - это объект в вашем примере, так что вам просто нужно передать объект

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

Это должно сработать

Редактировать: добавлен конечный элемент, чтобы убедиться, что он скомпилирован.

9 голосов
/ 11 августа 2016

Если вы хотите удалить список идентификаторов, это прекрасно работает.

db.CollectionName.remove({
    "_id": {
        $in: [
            ObjectId("0930292929292929292929"),
            ObjectId("0920292929292929292929")
        ]
     }
}) 
5 голосов
/ 23 августа 2017

У вас есть несколько узлов mongodb в наборе реплик?

Я обнаружил (я использую через оболочку Robomongo GUI MONGO, я думаю, что это применимо и в других случаях), что правильный синтаксис удаления, т.е.

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

... не работает, если вы не подключены к первичному узлу набора реплик.

4 голосов
/ 13 апреля 2012

Я только что столкнулся с этим сам, и этот вариант работал для меня:

db.foo.remove({**_id**: new ObjectId("4f872685a64eed5a980ca536")})
3 голосов
/ 10 февраля 2017

сначала получите функцию ObjectID из mongodb ObjectId = require (mongodb) .ObjectID;

, затем вы можете вызвать _id с помощью функции удаления

"_ id": ObjectId ("4d519266577700000000549090«)

0 голосов
/ 27 мая 2019

Несмотря на то, что это сообщение устарело, collection.remove устарело! * Вместо этого следует использовать collection.delete_one!

Более подробную информацию можно найти здесь, под # remove

0 голосов
/ 10 февраля 2016

Решение и пример:

1- C: \ MongoDB \ Server \ 3.2 \ bin> mongo (пока не вводите команду, потому что вы еще не подключены к какой-либо базе данных, вы подключены только к серверу базы данныхmongodb).

2-

show db analytics_database 0.000GB локальная 0.000GB test_database 0.000GB

3-

использовать базу данных test_database переключенную на базу данных test_database

4-

db.Collection.remove ({"_ id": ObjectId ("5694a3590f6d451c1500002e")}, 1);WriteResult ({"nRemoved": 1})

теперь вы видите, что WriteResult ({"nRemoved": 1}) равен 1, а не 0.

Готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...