sql >> Databáze >  >> NoSQL >> MongoDB

Jak importovat pouze neexistující dokumenty?

Výchozí chování mongoimportu by nemělo spočívat v přepisování existujících dokumentů:V prostředí JS jsem vytvořil dokument v kolekci "testimport"

> db.testimport.save({_id:1, x:"a"})
> db.testimport.find()
{ "_id" : 1, "x" : "a" }
> 

Zde je obsah souboru import.json. Obsahuje 2 dokumenty, jeden s jedinečným _id a jeden s duplicitním _id.

import.json
{_id:1, x:"b"}
{_id:2, x:"b"}

V novém okně terminálu se spustí mongoimport:

$ ./mongoimport -d test -c testimport import.json -vvvvv 
Wed Apr  4 19:03:48 creating new connection to:127.0.0.1
Wed Apr  4 19:03:48 BackgroundJob starting: ConnectBG
Wed Apr  4 19:03:48 connected connection!
connected to: 127.0.0.1
Wed Apr  4 19:03:48 ns: test.testimport
Wed Apr  4 19:03:48 filesize: 29
Wed Apr  4 19:03:48 got line:{_id:1, x:"b"}
Wed Apr  4 19:03:48 got line:{_id:2, x:"b"}
imported 2 objects
$

I když výstup mongoimport říká, že byly importovány dva objekty, dokument s _id:1 nebyl přepsán.

> db.testimport.find()
{ "_id" : 1, "x" : "a" }
{ "_id" : 2, "x" : "b" }
>

Pokud je použit příznak --upsert, pak bude dokument s _id:1 aktualizován:

$ ./mongoimport -d test -c testimport import.json -vvvvv --upsert
Wed Apr  4 19:14:26 creating new connection to:127.0.0.1
Wed Apr  4 19:14:26 BackgroundJob starting: ConnectBG
Wed Apr  4 19:14:26 connected connection!
connected to: 127.0.0.1
Wed Apr  4 19:14:26 ns: test.testimport
Wed Apr  4 19:14:26 filesize: 29
Wed Apr  4 19:14:26 got line:{_id:1, x:"b"}
Wed Apr  4 19:14:26 got line:{_id:2, x:"b"}
imported 2 objects
$

V prostředí JS vidíme, že dokument s _id:1 byl aktualizován:

> db.testimport.find()
{ "_id" : 1, "x" : "b" }
{ "_id" : 2, "x" : "b" }
>

Není toto chování, které zažíváte? Výše uvedené bylo testováno s verzí 2.1.1-pre, ale nevěřím, že se kód mongoimport na chvíli změnil.




  1. Spuštění pod dohledem z hostitele, celer z virtualenv (aplikace Django)

  2. Jak odstranit objekt s ohledem na reference v Mongoose Node.js?

  3. Meteor:nahrávání souboru z klienta do kolekce Mongo vs souborový systém vs GridFS

  4. Nastavení TTL nefunguje v Mongodb c#