1

これは、ツール->コマンドで実行した私のコマンドです

{
aggregate : "hashtags",       
pipeline:

[

{$unwind:"$time"},
{$match:{"$time":{$gte:NumberInt(1450854385), $lte:NumberInt(1450854385)}}},
{$group:{"_id":"$word","count":{$sum:1}}}
]

}

この結果が得られました

Response from server:
{
   "result": [
     {
       "_id": "dear",
       "count": NumberInt(1) 
    },
     {
       "_id": "ghost",
       "count": NumberInt(1) 
    },
     {
       "_id": "rat",
       "count": NumberInt(1) 
    },
     {
       "_id": "police",
       "count": NumberInt(1) 
    },
     {
       "_id": "bugs",
       "count": NumberInt(3) 
    },
     {
       "_id": "dog",
       "count": NumberInt(2) 
    },
     {
       "_id": "batman",
       "count": NumberInt(9) 
    },
     {
       "_id": "ear",
       "count": NumberInt(1) 
    } 
  ],
   "ok": 1 
}

ドキュメントはコレクション「ハッシュタグ」にあります 挿入されたドキュメントは次のとおりです 1.

{
   "_id": ObjectId("567a483bf0058ed6755ab3de"),
   "hash_count": NumberInt(1),
   "msgids": [
     "1583" 
  ],
   "time": [
     NumberInt(1450854385) 
  ],
   "word": "ghost" 
}

2.

{
   "_id": ObjectId("5679485ff0058ed6755ab3dd"),
   "hash_count": NumberInt(1),
   "msgids": [
     "1563" 
  ],
   "time": [
     NumberInt(1450788886) 
  ],
   "word": "dear" 
}

3.

{
   "_id": ObjectId("567941aaf0058ed6755ab3dc"),
   "hash_count": NumberInt(9),
   "msgids": [
     "1555",
     "1556",
     "1557",
     "1558",
     "1559",
     "1561",
     "1562",
     "1584",
     "1585" 
  ],
   "time": [
     NumberInt(1450787170),
     NumberInt(1450787292),
     NumberInt(1450787307),
     NumberInt(1450787333),
     NumberInt(1450787354),
     NumberInt(1450787526),
     NumberInt(1450787615),
     NumberInt(1450855148),
     NumberInt(1450855155) 
  ],
   "word": "batman" 
}

4.

{
   "_id": ObjectId("567939cdf0058ed6755ab3d9"),
   "hash_count": NumberInt(3),
   "msgids": [
     "1551",
     "1552",
     "1586" 
  ],
   "time": [
     NumberInt(1450785157),
     NumberInt(1450785194),
     NumberInt(1450856188) 
  ],
   "word": "bugs" 
}

だから私は2つの制限の間にある「時間」フィールドの値の数を数えたい

このような

foreach word
{
foreach time
{
if((a<time)&&(time<b))
word[count]++
}
}

しかし、私のクエリは、配列「時間」の合計サイズを出力しているだけです。

正しいクエリは何ですか?

例えば

if lower bound is 1450787615  and upper bound is  1450855155

「時間」には 3 つの値があります。単語「バットマン」

The answer should be
{
           "_id": "batman",
           "count": NumberInt(3) 
        },

バットマンのために。ありがとう。

4

1 に答える 1