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

MongoDB trả về dữ liệu đối xứng, mục đầu tiên trong mảng được trả về đầy đủ, phần còn lại với các thuộc tính nhất định bị bỏ qua?

Nếu mảng tài liệu con của bạn mà bạn muốn bỏ qua không lớn lắm. Tôi sẽ chỉ xóa nó ở phía ứng dụng. Thực hiện xử lý trong MongoDB có nghĩa là bạn chọn sử dụng tài nguyên tính toán của MongoDB thay vì ứng dụng của bạn. Nói chung, ứng dụng của bạn mở rộng quy mô dễ dàng hơn và rẻ hơn, vì vậy việc triển khai ở lớp ứng dụng được ưu tiên hơn.

Nhưng trong trường hợp chính xác này, không quá phức tạp để triển khai nó trong MongoDB:

db.collection.aggregate([
  {
    $addFields: { // keep the first element somewhere
      first: { $arrayElemAt: [ "$mainArray", 0] }
    }
  },
  {
    $project: { // remove the subdocument field
      "mainArray.array": false
    }
  },
  {
    $addFields: { // join the first element with the rest of the transformed array
      mainArray: {
        $concatArrays: [
          [ // first element
            "$first"
          ],
          { // select elements from the transformed array except the first
            $slice: ["$mainArray", 1, { $size: "$mainArray" }]
          }
        ]
      }
    }
  },
  {
    $project: { // remove the temporary first elemnt
      "first": false
    }
  }
])

Sân chơi MongoDB




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB thời gian chờ chỉ trong dự án cụ thể

  2. lỗi TS2688:Không thể tìm thấy tệp định nghĩa loại cho 'bson'

  3. MongoDB khác biệt giữa mã lỗi 11000 và 11001

  4. Làm cách nào để lưu trữ mảng đã sắp xếp trở lại MongoDB?

  5. mongoDB:Trình điều khiển C # V2 Cách cập nhật mục trong bộ sưu tập lồng nhau