Tôi có một bộ sưu tập mà là nhật ký của hoạt động trên các đối tượng như thế này:MongoDB đếm tất cả các phần tử mảng trong tất cả các đối tượng phù hợp theo các tiêu chí
{
"_id" : ObjectId("55e3fd1d7cb5ac9a458b4567"),
"object_id" : "1",
"activity" : [
{
"action" : "test_action",
"time" : ISODate("2015-08-31T00:00:00.000Z")
},
{
"action" : "test_action",
"time" : ISODate("2015-08-31T00:00:22.000Z")
}
]
}
{
"_id" : ObjectId("55e3fd127cb5ac77478b4567"),
"object_id" : "2",
"activity" : [
{
"action" : "test_action",
"time" : ISODate("2015-08-31T00:00:00.000Z")
}
]
}
{
"_id" : ObjectId("55e3fd0f7cb5ac9f458b4567"),
"object_id" : "1",
"activity" : [
{
"action" : "test_action",
"time" : ISODate("2015-08-30T00:00:00.000Z")
}
]
}
Nếu tôi followoing truy vấn:
db.objects.find({
"createddate": {$gte : ISODate("2015-08-30T00:00:00.000Z")},
"activity.action" : "test_action"}
}).count()
nó trả về số lượng tài liệu có chứa "test_action" (3 trong tập này), nhưng tôi cần phải đếm tổng số test_actions (4 trên tập này). Làm thế nào để làm điều đó?
Cảm ơn bạn rất nhiều. Tránh "$ thư giãn" là phải trên bộ dữ liệu lớn. Truy vấn hoạt động như một nét duyên dáng. Kiến thức của tôi khá cơ bản bây giờ và tôi thực sự không biết CÁCH nó hoạt động thế nào :) Nhưng việc tìm ra điều này sẽ là bài tập về nhà của tôi cho ngày hôm nay) – aokozlov