私のMongoDBスキーマのサンプルをサブ文書のフィールドの発生を数えるには、挿入時間がServerTime
なり、Doc
は1時間ごとに挿入され、以下のとおりです。MongoDBのクエリと
{
"_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: ServerTime
は、私はで各User.name
アクセスしたURLの数を照会するDoc
内のすべてのsub-docs
ため同じになります文書及びこれらDoc
がDoc.sub-docs.ServerTime
に基づいた時間枠の間に入る必要があり、最終的な出力は、それを達成するためにどのように
{
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,
...
}
}
...
...
でしょうか?
ServerTimeをドキュメントレベルで使用していれば、簡単に集約を使用することができます。なぜなら、常に同じであれば、各サブドキュメントに埋め込むのはなぜですか? –