MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm cách nào để chỉ nhập các tài liệu không tồn tại?

Hành vi mặc định của mongoimport không được ghi đè lên các tài liệu hiện có:Trong JS shell, tôi đã tạo một tài liệu trong bộ sưu tập "chứng thực"

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

Đây là nội dung của tệp import.json. Nó chứa 2 tài liệu, một tài liệu có _id duy nhất và một tài liệu có _id trùng lặp.

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

Trong một cửa sổ đầu cuối mới, mongoimport được chạy:

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

Mặc dù đầu ra của mongoimport nói rằng hai đối tượng đã được nhập, tài liệu có _id:1 vẫn chưa bị ghi đè.

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

Nếu cờ --upsert được sử dụng, thì tài liệu có _id:1 sẽ được cập nhật:

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

Trong JS shell, chúng ta có thể thấy rằng tài liệu có _id:1 đã được cập nhật:

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

Đây không phải là hành vi mà bạn đang gặp phải? Ở trên đã được thử nghiệm với phiên bản 2.1.1-pre, nhưng tôi không tin rằng mã mongoimport đã thay đổi trong một thời gian.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. node-mongodb-native MongoClient bất ngờ đóng các kết nối

  2. Spring MongoRepository đang cập nhật hoặc nâng cấp thay vì chèn

  3. Làm cách nào để bạn truy cập một mục mảng cụ thể trong tập hợp phép chiếu MongoDB?

  4. Cập nhật và trả lại tài liệu trong Mongodb

  5. Hiệu suất cấu trúc bộ sưu tập MongoDB