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

$ project trong tổng hợp $ lookup

Thách thức chính là bạn muốn tất cả các trường từ tài liệu chính (vì bạn không biết tất cả chúng) cộng với chỉ 2 từ danh sách.

Điều này nên làm điều đó:

{
  $project: {
    "_id": 0,
    "document": "$$CURRENT",
    "list._id": "$$CURRENT.list._id",
    "list.name": "$$CURRENT.list.name"
  }
}, {
  $project: {
    "document.list": 0
  }
}, {
  $addFields: {
    "document.list._id": "$$CURRENT.list._id",
    "document.list.name": "$$CURRENT.list.name"
  }
}, {
  $replaceRoot: {
    newRoot: "$document"
  }
}

Nó trải qua một vài giai đoạn nhưng hoàn thành công việc :). Nó sẽ lấy tài liệu hiện tại và chỉ các trường danh sách bạn muốn. Sau đó, nó sẽ xóa khỏi tài liệu hiện tại trong danh sách của nó. Sau đó, nó sẽ thêm vào cùng tài liệu đó danh sách (vì tài liệu đó có các trường cụ thể mà chúng tôi muốn). Sau đó, nó sẽ thêm các trường đó vào tài liệu và cuối cùng nó sẽ thay thế gốc bằng tài liệu đó.

Xem nó hoạt động ở đây .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Xuất json hợp lệ từ bộ sưu tập mongodb

  2. Thêm trường có giá trị tăng dần trong Tổng hợp MongoDB dựa trên điều kiện

  3. Triển khai ứng dụng node js sử dụng mongo db trên aws

  4. Làm cách nào để bạn thực hiện tìm kiếm (id:{$ in:[list]}) bằng ứng dụng khách vertx-mongo

  5. MongoDB với java Ngoại lệ trong luồng chính java.lang.NoClassDefFoundError:org / bson / convert / Bson