Tôi đã làm một công việc nhỏ xung quanh khi tôi cần truy vấn kích thước mảng và trả về nếu nó lớn hơn 0 nhưng có thể là bất cứ thứ gì từ 1-3.
Đây là giải pháp của tôi:
db.test.find($or : [{$field : { $exists : true, $size : 1}},
{$field : { $exists : true, $size : 2}},
{$field : { $exists : true, $size : 3}}, ])
này về cơ bản trả về một tài liệu khi thuộc tính tồn tại và kích thước là 1, 2, hoặc 3. Người sử dụng có thể thêm nhiều câu lệnh và tăng nếu họ đang tìm kiếm một kích thước cụ thể hoặc trong phạm vi. Tôi biết nó không hoàn hảo nhưng nó đã hoạt động và tương đối nhanh. Tôi chỉ có 1-3 kích thước trong thuộc tính của tôi để giải pháp này hoạt động.
Tôi không nghĩ bạn có thể sử dụng toán tử kích thước $ như thế này với $ group. Kích thước $ không nằm trong số [toán tử tập hợp] (http://docs.mongodb.org/manual/reference/operator/aggregation-group/). Thay vào đó, bạn có thể sử dụng chiếu nếu bạn không cần nhóm: db.test.aggregate ({$ dự án: đếm: {$ Kích thước: "$ tags"}}) HOẶC nếu bạn không cần nhóm , smth như thế này: db.test.aggregate ({$ group: {_id: "$ userName", đếm: {$ sum: {$ size: "$ tags"}}}}) –
thú vị mà không ai phàn nàn về nó trước, nhờ – anvarik
Làm thế nào để có thể nhận được khi tôi có một cái gì đó như thế này: {tên người dùng: 'Alex', thẻ: [['C#', 'Java', 'C++']]} Làm thế nào chúng ta có thể nhận được chiều dài/kích thước của thẻ bây giờ? – rkatkam