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

Cách chiếu các trường có điều kiện trong khi tổng hợp trong mongodb

Đã cập nhật

Tổng hợp này sẽ đặt giá trị của skill_score thành 0 if _skills không tồn tại, thì hãy sử dụng $redact để xóa tài liệu phụ có skill_score bằng 0 :

db.project_if.aggregate([
  {
    $unwind: {
      path: '$_skills',
      preserveNullAndEmptyArrays: true,
    }
  },
  {
    $project: {
      _skills: {
        label: '$_skills',
        skill_score: {
          $cond: {
            if: {
              $eq: ['$_skills', undefined]
            },
            then: 0,
            else: 1,
          }
        }
      }
    }
  }, 
  {
    $redact: {
      $cond: {
        if: { $eq: [ "$skill_score", 0 ] },
        then: '$$PRUNE',
        else: '$$DESCEND'
      }
    }
  }
]);

Kết quả sẽ như sau:

[
  { "_id" : '', "_skills" : { "label" : "skill1", "skill_score" : 1 } },
  { "_id" : '', "_skills" : { "label" : "skill2", "skill_score" : 1 } },
  { "_id" : '' },
]



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Ghi đè đối tượng trong mongodb

  2. Lưu đối tượng Mongoose thành hai bộ sưu tập

  3. Lỗi kết nối MongoDB trong giọt Digital Ocean

  4. Tự động cập nhật nhiều tài liệu VÀ gửi lại chúng

  5. TypeError:Không thể sử dụng toán tử 'in' để tìm kiếm '_id' ở nam