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

Как да импортирам само несъществуващи документи?

Поведението по подразбиране на mongoimport не трябва да бъде презаписване на съществуващи документи:В JS shell създадох документ в колекцията "testimport"

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

Ето съдържанието на файла import.json. Той съдържа 2 документа, един с уникален _id и един с дублиран _id.

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

В нов терминален прозорец се изпълнява 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
$

Въпреки че резултатът от mongoimport казва, че са импортирани два обекта, документът с _id:1 не е презаписан.

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

Ако се използва флагът --upsert, документът с _id:1 ще бъде актуализиран:

$ ./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
$

В JS shell можем да видим, че документът с _id:1 е актуализиран:

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

Не е ли това поведението, което изпитвате? Горното беше тествано с версия 2.1.1-pre, но не вярвам, че кодът на mongoimport се е променил за известно време.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB „не може да намери индекс за $geoNear заявка“

  2. Прототип на Mongoose:как да вмъкнете URL динамично?

  3. Обработка на попълнени от Mongoose полета в GraphQL

  4. Наименуван обхват на Mongoid, сравняващ две времеви полета в един и същи документ

  5. MongoDB асиметрично връщане на данни, първият елемент в масива се връща изцяло, останалите с определени свойства са пропуснати?