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

Làm cách nào để sử dụng $ arrayElemAt và xóa các trường khỏi phần tử đó trong phép chiếu MongoDB $?

Đây là từ cú pháp của arrayElemAt

Có nghĩa là bạn có thể xây dựng các phần tử mảng của mình theo cách bạn muốn. Trong trường hợp của bạn, bạn chỉ muốn có tên. Vì vậy, điều này sẽ hoạt động:

[{
  $match: {
    jobCategoryId: mongoose.Types.ObjectId(jobCategoryId)
  }
}, {  
  $lookup: {  
    from: 'users',
    localField: 'userId',
    foreignField: '_id',
    as: 'user'
  }
}, {  
  $project: {  
    _id: 1,
    description: 1,
    title: 1,
    user: {  
      name: {
        $arrayElemAt: ["$user.name", 0]
      }
    }
  }
}]

Cập nhật tiếp theo :người ta hỏi cách bổ sung các thuộc tính trên đầu name . Đây là dự án:

{  
  $project: {  
    _id: 1,
    description: 1,
    title: 1,
    user: {  
      name: {  
        $arrayElemAt: ["$user.name", 0]
      },
      email: {  
        $arrayElemAt: ["$user.email", 0]
      }
    }
  }
}

Tiếp theo thứ hai như Drag0 đã hỏi trong phần nhận xét:Nếu điều trên không đủ tốt vì kết quả tạo ra một người dùng:[] mảng có kích thước 1 thay vì một người dùng đối tượng:{} có thể sử dụng phần sau.

{  
  $project: {
    _id: 1,
    description: 1,
    title: 1,
    user: {
      $let: {
        vars: {
          firstUser: {
            $arrayElemAt: ["$user", 0]
          }
        },
        in: {
          name: "$$firstUser.name",
          email: "$$firstUser.email"
        }
      }
    }
  }
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Elasticsearch hết thời gian chờ đối với mọi yêu cầu tìm kiếm cho đến khi khởi động lại

  2. chỉnh sửa mối quan hệ N-N của các subocments trong mongodb

  3. Làm cách nào để loại trừ các trường khỏi tài liệu được nhúng trong Mongoid?

  4. MongoDB $ hàng tuầnUpdate # 66 (ngày 22 tháng 4 năm 2022):Hackathons, mongosh và Github

  5. Nhập số lượng bản ghi từ bộ sưu tập khác với Mongoose