Mein mongoDB Schema Probe sind wie die folgenden, die Doc
jede 1 Stunde eingeführt wird, wird die eingelegte Zeit die ServerTime
sein:MongoDB Abfrage und zählen Auftreten des Unterdokumentenfeld
{
"_id" : ObjectId("5709fd69c1aa400008ff66da"),
Doc: {
total: 245,
sub-docs: [
{
accessedURL: "www.example.com",
User:{
name: "John"
}
Time:{
ServerTime: "2016-03-30T15:45:41.296+0000",
FirstAccessTime: "2016-03-30T12:43:41.296+0800"
LastAccessTime: "2016-03-30T15:33:41.296+0800"
}
},
{
accessedURL: "www.123.com",
User:{
name: "John"
}
Time:{
ServerTime: "2016-03-30T15:45:41.296+0000",
FirstAccessTime: "2016-03-30T12:40:41.296+0800"
LastAccessTime: "2016-03-30T15:23:41.296+0800"
}
},
{
accessedURL: "www.example.com",
User:{
name: "Eric"
}
Time:{
ServerTime: "2016-03-30T15:45:41.296+0000",
FirstAccessTime: "2016-03-30T12:43:41.296+0800"
LastAccessTime: "2016-03-30T15:33:41.296+0800"
}
},
... # 245 sub-docs in the array
]
}
}
... # more Docs
...
NPTE: Die ServerTime
wird identisch für alle sub-docs
im Doc
sein ich jede User.name
zugegriffen URL Zahl in derabfragen möchtenDokument und Diejenigen Doc
sollte auf der Doc.sub-docs.ServerTime
Basis zwischen einem Zeitrahmen fallen in, wird die endgültige Ausgabe
{
ServerTime: "2016-03-30T15:45:41.296+0000",
sub-docs: {
John: 3,
Eric: 4,
...
}
}
{
ServerTime: "2016-03-30T16:45:41.296+0000",
sub-docs: {
John: 1,
Eric: 2,
...
}
}
...
...
Wie das erreichen?
Sie könnten Aggregation leicht verwenden, wenn Sie die ServerTime auf Doc-Ebene hatten ... Warum sollte es auf jedem Subdoc eingebettet werden, wenn es immer gleich ist? –