Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Lấy độ dài mảng với $size trong MongoDB Aggregation

Sử dụng $size trong stage $project để tính độ dài mảng. Kết hợp $match để lọc trước.

Tạo collection:

> db.demo382.insertOne({
  "Name" : "David",
  "details" : [
    { "SubjectName":"MySQL" },
    { "SubjectName":"MongoDB" },
    { "SubjectName":"Java" }
  ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5b5e1c22064be7ab44e7f0") }

Xem dữ liệu:

> db.demo382.find().pretty();

Aggregation đếm số phần tử mảng details:

> db.demo382.aggregate([
  { "$match": { "Name": "David" } },
  { "$project": { "count": { "$size": "$details" }}}
])

Kết quả:

Lưu ý:

  • $size chỉ dùng trong $project, $addFields, $set (không dùng trong $match trực tiếp)
  • Để lọc theo độ dài mảng: dùng $expr trong $match: {$expr: {$eq: [{$size: "$details"}, 3]}}
  • $size trả về số lượng phần tử mảng, không đệ quy vào mảng con

Tiêu đề đề cập $slice nhưng ví dụ dùng $size. $slice dùng để cắt mảng (limit/skip phần tử), không phải lấy độ dài.