MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да изтриете MongoDB документи чрез импортиране на файл

От mongoimport версия 100.0.0, можете да изтривате документи в MongoDB въз основа на импортиран файл. За да направите това, използвайте delete режим.

Когато използвате delete режим, ако импортираният документ има същия _id стойност като съществуваща в колекцията, в която импортирате, съществуващият документ ще бъде изтрит.

Можете също да посочите друго поле или полета (различни от _id поле) да бъде полето за съвпадение, ако е необходимо.

Пример

Да предположим, че имаме колекция, наречена pets които съдържат следните документи:

db.pets.find() 

Резултат:

{ "_id" :1, "name" :"Wag", "type" :"Dog", "weight" :20 }{ "_id" :2, "name" :"Bark", "type" :"Куче", "тегло" :10 }{ "_id" :3, "име" :"Мяу", "тип" :"Котка", "тегло" :7 }{ "_id" :4, "име" :"Scratch", "type" :"Cat", "weight" :8 }{ "_id" :5, "name" :"Bruce", "type" :"Bat", "weight" :3 } 

И имаме следния JSON файл, наречен pets.json :

{"_id":1,"name":"Wag","type":"Куче"}{"_id":2,"name":"Пухкав","type":"Котка"," тегло":10}{"_id":9,"name":"Хоп","type":"Кенгуру","тегло":60}

Следната команда импортира JSON файла с помощта на delete режим:

mongoimport --db=PetHotel --collection=pets --mode=delete --file=data/pets.json 

Изпълнението на тази команда изтрива всички съвпадащи документи в колекцията.

Проверете резултатите

Нека да разгледаме колекцията сега.

db.pets.find() 

Резултат:

{ "_id" :3, "name" :"Meow", "type" :"Cat", "weight" :7 }{ "_id" :4, "name" :"Scratch", "type" :"Котка", "тегло" :8 }{ "_id" :5, "име" :"Брус", "тип" :"Прилеп", "тегло" :3 }

Виждаме, че първите 2 документа са изтрити. Те бяха изтрити, защото техният _id стойностите съответстват на _id стойности в съществуващите документи. Това е въпреки че други подробности не съвпадат непременно (като с документ 2).

Освен това нашият импортиран файл имаше документ с _id от 9, но нямаше съответстващ документ и така нищо не беше изтрито за този.

Променете полето/ите на Upsert

Можете да използвате --upsertFields параметър, за да посочите поле, различно от _id срещу които да се съпоставим. Когато използвате множество полета с този параметър, ги предайте като списък, разделен със запетая.

Да предположим, че имаме друг JSON файл, наречен pets2.json и изглежда така:

{ "name" :"Meow", "type" :"Cat", "weight" :7 }{ "name" :"Bubbles", "type" :"Fish", "weight" :3 } 

Този документ не включва _id поле, така че ще трябва да съпоставим с други полета, които уникално идентифицират всеки документ. В този случай бихме могли да използваме name и type полета.

Следователно можем да използваме следния mongoimport команда:

mongoimport --db=PetHotel --collection=pets --mode=delete --upsertFields=name,type --file=data/pets2.json 

Сега нека проверим колекцията отново:

db.pets.find() 

Резултат:

{ "_id" :4, "name" :"Scratch", "type" :"Cat", "weight" :8 }{ "_id" :5, "name" :"Bruce", "type" :"Прилеп", "тегло" :3 }

Мяу котката беше изтрита, защото този домашен любимец съществуваше както в колекцията MongoDB, така и в импортирания документ.

Мехурчетата рибата нямаше съответстващ документ и така нищо не беше изтрито за този.

Проверете за mongoimport

mongoimport е част от пакета MongoDB Database Tools. Инструментите за база данни на MongoDB са набор от помощни програми от командния ред за работа с MongoDB.

Ако не сте сигурни дали имате MongoDB Database Tools/mongoimport инсталиран, опитайте да изпълните следната команда във вашия терминал или команден ред, за да проверите:

mongoimport --version 

Ако го имате, трябва да видите информация за версията и т.н. Ако го нямате, можете да използвате инструкциите за инсталиране на уебсайта на MongoDB, за да го инсталирате на вашата система.

Къде да изпълнявам командите?

Не забравяйте, че трябва да стартирате mongoimport команди от командния ред на вашата система (например нов прозорец на терминал или команден ред).

Не ги стартирайте от mongo черупка.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да задам стойност по подразбиране на цяло число в mongodb?

  2. Причини за и против преминаването от SQL сървър към MongoDB

  3. MongoDB $acos

  4. Прилагането на 2dsphere индекс върху схема на мангуста принуждава ли полето за местоположение да бъде задължително?

  5. MongoDB - необходим ли е DBREF?