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

Mongo DB:Làm thế nào để sao chép Tài liệu từ một bộ sưu tập và thêm nó dưới dạng một trường vào một tài liệu liên quan từ một bộ sưu tập khác?

Bắt đầu từ MongoDB 4.4, $ hợp nhất có thể xuất ra cùng một bộ sưu tập đang được tổng hợp:

db.products.aggregate([       
   { /**
    * from: The target collection.
    * localField: The local join field.
    * foreignField: The target join field.
    * as: The name for the results.
    * pipeline: The pipeline to run on the joined collection.
    * let: Optional variables to use in the pipeline field stages.
    */
   $lookup: {
     from: 'events',
     localField: '_id',
     foreignField: 'product_id',
     as: 'events'
   }},
   {/**
    * into: The target collection.
    * on: Fields to  identify.
    * whenMatched: Action for matching docs.
    * whenNotMatched: Action for non-matching docs.
    */
   $merge: {
     into: 'products',
     on: "_id",
     whenMatched: 'merge',
     whenNotMatched: 'insert'
   }}
])

Hãy lưu ý: khi $ merge đầu ra cho cùng một bộ sưu tập đang được tổng hợp, các tài liệu có thể được cập nhật nhiều lần hoặc hoạt động có thể dẫn đến một vòng lặp vô hạn. Thông tin chi tiết tại đây https:// docs .mongodb.com / manual / reference / operator / aggregation / merge / # merge-behavior-same-collection

Nếu đó là bản cập nhật một lần, bạn có thể bảo vệ đường dẫn bằng cách thêm bộ lọc ban đầu làm giai đoạn đầu tiên để đảm bảo tài liệu được cập nhật chính xác một lần:

{ $match: { events: { $exists: false } }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Điều gì xảy ra khi mongodb hết bộ nhớ?

  2. Java MongoDB nhận giá trị cho tài liệu con

  3. Lập mô hình cho lược đồ bạn bè trong mongoose?

  4. Kết quả truy vấn phép chiếu Mongo thay đổi so với thử nghiệm trong ứng dụng shell và nodejs

  5. Làm thế nào để tìm các cặp gần nhất (Khoảng cách Hamming) của một chuỗi các thùng nhị phân trong Ruby mà không gặp vấn đề về O ^ 2?