passend Ich habe eine Sammlung, die Protokoll der Aktivitäten auf Objekte ist wie folgt:MongoDB alle Array-Elemente in allen Objekten zählen nach Kriterien
{
"_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")
}
]
}
Wenn ich das tue followoing query:
db.objects.find({
"createddate": {$gte : ISODate("2015-08-30T00:00:00.000Z")},
"activity.action" : "test_action"}
}).count()
kehrt Anzahl der Dokumente, die "test_action" enthalten (3 in diesem Satz), aber ich muss alle test_actions zählen (4 in diesem Set). Wie mache ich das?
Vielen Dank. Die Vermeidung von "$ unwind" ist bei großen Datensätzen ein Muss. Abfrage funktioniert wie ein Zauber. Mein Wissen ist jetzt ziemlich grundlegend und ich weiß nicht wirklich WIE es noch funktioniert :) Aber das herauszufinden wird meine Hausaufgabe für heute sein) – aokozlov