Lấy chỉ số của phần tử trong mảng mongodb

Sử dụng khung tổng hợp, tôi muốn thêm chỉ mục của từng phần tử bên trong mảng vào chính tài liệu con

Trong giai đoạn sau, tôi muốn

{ myResults : [
    { index: 0,  // <-- this should be added
      foo: "bar"
    },
    { index: 1,  // <-- this should be added
      answer: 42
    }
]
4 phần tử, nhưng sau đó tôi cần chỉ mục cũ bên trong Mảng myResults

Cấu trúc hiện tại

{ myResults : [
    { foo: "bar"
    },
    { answer: 42
    }
]

Cơ cấu mục tiêu

{ myResults : [
    { index: 0,  // <-- this should be added
      foo: "bar"
    },
    { index: 1,  // <-- this should be added
      answer: 42
    }
]

Ghi chú. Tôi không muốn cập nhật các phần tử, - Tôi chỉ muốn sử dụng chỉ mục trong giai đoạn sau của quy trình tổng hợp

Tôi có một

{ myResults : [
    { index: 0,  // <-- this should be added
      foo: "bar"
    },
    { index: 1,  // <-- this should be added
      answer: 42
    }
]
5 đại diện cho một cuộc trò chuyện. Nó chứa một mảng
{ myResults : [
    { index: 0,  // <-- this should be added
      foo: "bar"
    },
    { index: 1,  // <-- this should be added
      answer: 42
    }
]
6 và mỗi
{ myResults : [
    { index: 0,  // <-- this should be added
      foo: "bar"
    },
    { index: 1,  // <-- this should be added
      answer: 42
    }
]
6 đề cập đến một thông báo

Tôi muốn người dùng gửi tới API của tôi một tin nhắn

{ myResults : [
    { index: 0,  // <-- this should be added
      foo: "bar"
    },
    { index: 1,  // <-- this should be added
      answer: 42
    }
]
8, vì vậy tôi có thể truy xuất tất cả các tin nhắn
{ myResults : [
    { index: 0,  // <-- this should be added
      foo: "bar"
    },
    { index: 1,  // <-- this should be added
      answer: 42
    }
]
8 trên mảng, sau tin nhắn mà anh ấy đã gửi. Vì vậy, anh ấy có thể cập nhật với tất cả các tin nhắn mà anh ấy chưa có

Tôi có thể lấy vị trí của

{ myResults : [
    { index: 0,  // <-- this should be added
      foo: "bar"
    },
    { index: 1,  // <-- this should be added
      answer: 42
    }
]
8 mà anh ấy gửi cho tôi, trong mảng
{ $first: <expression> }
1, vào truy vấn không?

- stackoverflow. com

ghi bàn. 3

câu trả lời được chấp nhận

Mongo không hỗ trợ loại truy vấn này trên máy chủ, vì vậy nếu bạn thực hiện phương pháp này, bạn sẽ phải thực hiện nó trong ứng dụng của mình

Bạn có thể muốn xem xét các kiến ​​trúc khả thi khác. Đầu tiên, sau khi bạn có vị trí của ObjectId cuối cùng, bạn sẽ thực hiện truy vấn tiếp theo như thế nào?

Trong hướng dẫn MongoDB này, chúng ta sẽ học cách "chọn phần tử đầu tiên trong một mảng trong MongoDB" với một vài ví dụ. Chúng tôi sẽ đề cập đến điều này bằng cách thực hiện các hoạt động khác nhau với các ví dụ. Các chủ đề danh sách sau đây chúng tôi sẽ đề cập trong hướng dẫn này

  • Cách chọn phần tử đầu tiên trong một mảng trong truy vấn MongoDB
  • Chọn phần tử đầu tiên trong một mảng trong MongoDB bằng một ví dụ
  • Cách chọn phần tử đầu tiên trong mảng trong MongoDB với điều kiện
  • Chọn phần tử đầu tiên trong một mảng bằng MongoDB bằng cách sử dụng
  • Chọn phần tử đầu tiên trong một mảng trong MongoDB bằng python

Mục lục

  • Cách chọn phần tử đầu tiên trong một mảng trong truy vấn MongoDB
  • Chọn phần tử đầu tiên trong một mảng trong MongoDB một ví dụ
  • Cách chọn phần tử đầu tiên trong mảng trong MongoDB với điều kiện
  • Chọn phần tử đầu tiên trong một mảng bằng MongoDB bằng cách sử dụng
  • Chọn phần tử đầu tiên trong một mảng trong MongoDB bằng python

Cách chọn phần tử đầu tiên trong một mảng trong truy vấn MongoDB

MongoDB cung cấp chức năng tổng hợp $first để chọn phần tử đầu tiên trong một mảng

cú pháp

{ $first: <expression> }

Here, the can be any valid expression as it resolves to an array, null or missing.

Toán tử $first là bí danh cho biểu thức $arrayEleAt sau đây

{ $arrayElemAt: [ <array expression>, 0 ] }

ghi chú

Toán hạng hợp lệ cho $first phải phân giải thành một mảng, null hoặc bị thiếu

  • Nếu toán hạng phân giải thành một mảng không trống thì $first trả về phần tử đầu tiên trong mảng
  • Nếu toán hạng phân giải thành một mảng trống 
    { $arrayElemAt: [ <array expression>, 0 ] }
    1 thì $first không trả về giá trị
  • Nếu toán hạng là null hoặc bị thiếu thì $first trả về null

Cũng kiểm tra. MongoDB tổng hợp $count

Chọn phần tử đầu tiên trong một mảng trong MongoDB một ví dụ

Trong chủ đề này, bạn sẽ học cách chọn phần tử đầu tiên trong một mảng từ các tài liệu của bộ sưu tập MongoDB. Hãy hiểu điều này với sự trợ giúp của một ví dụ

Ví dụ

Trong ví dụ này, chúng tôi cũng sẽ đề cập đến các khái niệm Non-empty, null và missing

Chúng tôi tạo một bộ sưu tập có tên là kiểm tra với các tài liệu sau

db.test.insertMany([
{"_id": 1, "rank": [ 1, 2, 3 ] },   // Non-empty array
{"_id": 2, "rank": [ [ ] ] },       // Non-empty array
{"_id": 3, "rank": [ null ] },      // Non-empty array
{"_id": 4, "rank": [ ] },           // Empty array
{"_id": 5, "rank": null },          // Is null
{"_id": 6 }                         // Is Missing
])

Sau đó, chúng ta sẽ áp dụng truy vấn bên dưới để chọn phần tử đầu tiên của mảng bằng toán tử $first

db.test.aggregate([
   { $addFields: { firstElem: { $first: "$rank" } } }
])

Ở đây, chúng tôi đã sử dụng thao tác tổng hợp trong đó $addFields đã thêm một trường mới firstElem có giá trị được lấy từ việc áp dụng toán tử $first cho trường xếp hạng

Sau khi thực hiện, Nó trả về các tài liệu sau

Lấy chỉ số của phần tử trong mảng mongodb
Lấy chỉ số của phần tử trong mảng mongodb
Chọn phần tử đầu tiên trong một mảng trong ví dụ MongoDB

Chúng tôi đã lấy thành công phần tử đầu tiên của một mảng và thêm nó với các tài liệu của trường firstElem

Đọc. MongoDB lấy kích thước bộ sưu tập

Cách chọn phần tử đầu tiên trong mảng trong MongoDB với điều kiện

Trong chủ đề này, bạn sẽ học cách tìm phần tử đầu tiên trong một mảng trong bộ sưu tập MongoDB. Đối với điều này, MongoDB cung cấp toán tử $first để truy cập phần tử đầu tiên trong một mảng và cùng với toán tử $first, bạn cũng sẽ tìm hiểu về toán tử $last để truy cập phần tử cuối cùng trong một mảng. Hãy hiểu điều này với sự trợ giúp của một ví dụ

Ví dụ

Trong ví dụ này, chúng ta sẽ sử dụng toán tử $first và $last trên mảng để truy xuất thông tin

Chúng tôi đã tạo một bộ sưu tập mẫu chạy với các tài liệu sau

db.running.insertMany([
{"_id": 1, "team": "Anteater", log: [ { run: 1, distance: 8 }, { run2: 2, distance: 7.5 }, { run: 3, distance: 9.2 } ] },
{"_id": 2, "team": "Bears", log: [ { run: 1, distance: 18 }, { run2: 2, distance: 17 }, { run: 3, distance: 16 } ] },
{"_id": 3, "team": "Cobras", log: [ { run: 1, distance: 2 } ] },
{"_id": 4, "team": "Deer", log: [ { run: 1, distance: 13 }, { run2: 2, distance: 19 }, { run: 3, distance: 23 } ] }
])

Sau đó, chúng tôi sẽ áp dụng truy vấn bên dưới để chọn phần tử đầu tiên trong một mảng trong bộ sưu tập MongoDB

________số 8

Ở đây, chúng tôi đã sử dụng phép toán tổng hợp và sử dụng toán tử $first và $last trên mảng nhật ký để truy xuất thông tin cho lần chạy đầu tiên và lần chạy cuối cùng

Lấy chỉ số của phần tử trong mảng mongodb
Lấy chỉ số của phần tử trong mảng mongodb
Cách chọn phần tử đầu tiên trong mảng trong MongoDB với

Chúng tôi đã lấy thành công phần tử đầu tiên và cuối cùng của một mảng và thêm nó với các tài liệu của trường firstrun và lastrun tương ứng

Đọc. $ trong Ví dụ MongoDB

Chọn phần tử đầu tiên trong một mảng bằng MongoDB bằng cách sử dụng

Trong chủ đề này, bạn sẽ hiểu cách chọn phần tử đầu tiên trong một mảng của bộ sưu tập MongoDB. MongoDB cung cấp thêm một hàm tổng hợp $arrayElemAt trả về phần tử tại chỉ mục mảng đã chỉ định. Hãy hiểu điều này với sự trợ giúp của một ví dụ và chọn phần tử đầu tiên trong một mảng

Cú pháp của $arrayElemAt

{ $arrayElemAt: [ <array>, <idx> ] }

Here, the expression resolves to an array and the expression resolves to an integer.

Ví dụ

Chúng tôi sẽ chèn các tài liệu sau vào bộ sưu tập của người dùng có chứa các tài liệu sau

{ myResults : [
    { index: 0,  // <-- this should be added
      foo: "bar"
    },
    { index: 1,  // <-- this should be added
      answer: 42
    }
]
0

Sau khi chèn tài liệu, chúng tôi sẽ áp dụng truy vấn bên dưới để trả về phần tử đầu tiên trong mảng yêu thích

{ myResults : [
    { index: 0,  // <-- this should be added
      foo: "bar"
    },
    { index: 1,  // <-- this should be added
      answer: 42
    }
]
1

Ở đây, chúng tôi đã sử dụng thao tác tổng hợp trong đó $arrayElemAt sẽ chọn các phần tử đầu tiên từ mảng $favorites

Lấy chỉ số của phần tử trong mảng mongodb
Lấy chỉ số của phần tử trong mảng mongodb
Chọn phần tử đầu tiên trong một mảng bằng MongoDB bằng cách sử dụng

Chúng tôi đã lấy thành công phần tử đầu tiên của một mảng bằng cách sử dụng $arrayElemAt và thêm nó cùng với các tài liệu của trường trước

Đọc. Ngày hiện tại trong MongoDB

Chọn phần tử đầu tiên trong một mảng trong MongoDB bằng python

Trong chủ đề này, bạn sẽ học cách chọn phần tử đầu tiên trong một mảng trong MongoDB bằng Python. Chúng tôi sẽ sử dụng trình điều khiển MongoDB PyMongo để truy cập cơ sở dữ liệu MongoDB. Hãy hiểu điều này, sau đó là một ví dụ và chọn phần tử đầu tiên trong một mảng từ bộ sưu tập MongoDB bằng cách sử dụng python

Ví dụ

Các tài liệu sau nằm trong bộ sưu tập chi tiết. Và, Bạn cũng có thể truy xuất tài liệu bằng cách sử dụng phương thức find() 

{ myResults : [
    { index: 0,  // <-- this should be added
      foo: "bar"
    },
    { index: 1,  // <-- this should be added
      answer: 42
    }
]
2

Bây giờ, chúng ta sẽ sử dụng khối mã python sau để chọn phần tử đầu tiên trong một mảng bộ sưu tập chi tiết hiện có

{ $arrayElemAt: [ <array expression>, 0 ] }
0

Trong mã, chúng tôi đã nhập thư viện pymongo để truy cập trình điều khiển MongoDB

  • Sau đó, kết nối với máy chủ
  • Truy cập bộ sưu tập chi tiết MongoDB của cơ sở dữ liệu thông tin
  • Sau đó, chúng tôi đã áp dụng hoạt động tổng hợp $arrayElemAt và xác định giá trị chỉ mục 0 để truy cập phần tử đầu tiên của mảng

Kiểm tra đầu ra

Lấy chỉ số của phần tử trong mảng mongodb
Lấy chỉ số của phần tử trong mảng mongodb
Chọn phần tử đầu tiên trong một mảng trong MongoDB bằng python

Chúng tôi đã lấy thành công phần tử đầu tiên của một mảng bằng cách sử dụng toán tử $arrayElemAt bằng python và thêm nó cùng với các tài liệu của trường firstElem

Bạn cũng có thể muốn đọc các hướng dẫn sau về MongoDB

  • Truy vấn riêng biệt trong MongoDB
  • MongoDB tìm theo ID
  • MongoDB trả về các trường cụ thể
  • MongoDB so sánh hai trường
  • Thứ tự MongoDB theo ngày
  • Cách xóa tài liệu trong MongoDB
  • MongoDB tìm tài liệu được chèn lần cuối
  • MongoDB kiểm tra xem tài liệu có tồn tại không
  • MongoDB chỉ trả về các phần tử mảng phù hợp

Tôi hy vọng bạn đã tìm hiểu về cách chọn phần tử đầu tiên trong một mảng trong MongoDB với một vài ví dụ và đề cập đến các chủ đề bên dưới

  • Cách chọn phần tử đầu tiên trong một mảng trong truy vấn MongoDB
  • Chọn phần tử đầu tiên trong một mảng trong MongoDB bằng một ví dụ
  • Cách chọn phần tử đầu tiên trong mảng trong MongoDB với điều kiện
  • Chọn phần tử đầu tiên trong một mảng bằng MongoDB bằng cách sử dụng
  • Chọn phần tử đầu tiên trong một mảng trong MongoDB bằng python

Lấy chỉ số của phần tử trong mảng mongodb

Bijay

Tôi là Bijay có hơn 15 năm kinh nghiệm trong ngành công nghiệp phần mềm. Trong thời gian này, tôi đã làm việc trên MariaDB và sử dụng nó trong rất nhiều dự án. Hầu hết độc giả của chúng tôi đến từ Hoa Kỳ, Canada, Vương quốc Anh, Úc, New Zealand, v.v.

Bạn muốn tìm hiểu MariaDB? . Ngoài ra, tôi là MVP của Microsoft

Làm cách nào để lấy một phần tử từ mảng trong MongoDB?

Để tìm kiếm mảng đối tượng trong MongoDB, bạn có thể sử dụng toán tử $elemMatch . Toán tử này cho phép chúng ta tìm kiếm nhiều hơn một thành phần từ một đối tượng mảng.

Làm cách nào để khớp giá trị mảng trong MongoDB?

Toán tử $elemMatch khớp với các tài liệu chứa trường mảng có ít nhất một phần tử khớp với tất cả các tiêu chí truy vấn đã chỉ định. Nếu bạn chỉ xác định một điều kiện

Làm cách nào để sử dụng $EQ trong MongoDB?

Toán tử đẳng thức ($eq ) được sử dụng để so khớp các tài liệu trong đó giá trị của trường bằng với giá trị đã chỉ định . Nói cách khác, toán tử $eq được sử dụng để xác định điều kiện bình đẳng. Điểm quan trọng. Nếu giá trị đã cho là một tài liệu, thì thứ tự của các trường trong tài liệu là quan trọng.

$$ có nghĩa là gì trong MongoDB?

Trong biểu thức, ký hiệu đô la $ đánh giá thành đường dẫn trường; . e. cung cấp quyền truy cập vào trường . Ví dụ, biểu thức $eq $eq. [ "$price", "$1" ] thực hiện kiểm tra sự bằng nhau giữa giá trị trong trường có tên price và giá trị trong trường có tên 1 trong tài liệu.