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

Làm cách nào để nối kết quả tổng hợp Mongo DB vào tập hợp hiện có?

Khởi động Mongo 4.2 , $merge mới toán tử tổng hợp (tương tự như $out ) cho phép hợp nhất kết quả của một đường dẫn tổng hợp vào bộ sưu tập được chỉ định:

Với đầu vào này:

db.source.insert([
  { "_id": "id_1", "a": 34 },
  { "_id": "id_3", "a": 38 },
  { "_id": "id_4", "a": 54 }
])
db.target.insert([
  { "_id": "id_1", "a": 12 },
  { "_id": "id_2", "a": 54 }
])

$merge giai đoạn tổng hợp có thể được sử dụng như:

db.source.aggregate([
  // { $whatever aggregation stage, for this example, we just keep records as is }
  { $merge: { into: "target" } }
])

để sản xuất:

// > db.target.find()
{ "_id" : "id_1", "a" : 34 }
{ "_id" : "id_2", "a" : 54 }
{ "_id" : "id_3", "a" : 38 }
{ "_id" : "id_4", "a" : 54 }

Lưu ý rằng $merge toán tử đi kèm với nhiều tùy chọn để chỉ định cách hợp nhất các bản ghi đã chèn xung đột với các bản ghi hiện có.

Trong trường hợp này (với các tùy chọn mặc định), đây là:

  • giữ các tài liệu hiện có của bộ sưu tập đích (đây là trường hợp của { "_id": "id_2", "a": 54 } )

  • chèn tài liệu từ đầu ra của đường ống tổng hợp vào tập hợp đích khi chúng chưa có mặt (dựa trên _id - đây là trường hợp của { "_id" : "id_3", "a" : 38 } )

  • thay thế các bản ghi của tập hợp đích khi đường ống tổng hợp tạo ra các tài liệu hiện có trong tập hợp đích (dựa trên _id - đây là trường hợp của { "_id": "id_1", "a": 12 } được thay thế bởi { "_id" : "id_1", "a" : 34 } )



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Ứng dụng giống Twitter sử dụng MongoDB

  2. Cách thêm chỉ mục trong dự án mongoDB với khuôn khổ Morphia

  3. Bản vá API REST để cập nhật một phần MongoDB trong .NET

  4. Cơ sở dữ liệu truy vấn Mongoid theo thuộc tính ảo

  5. Cách cài đặt MongoDB 4.2 trên hệ thống RedHat / CentOS 7