2015-02-24 74 views
3

我目前正在學習mongodb,並試圖用聚合查詢查詢測量結果(我知道查詢沒有最大意義,但它是一個簡化版本)。爲什麼聚合集只返回100個結果?

但不知何故查詢總是返回太少的結果。

db.measurements.aggregate([ 
    { 
     $match: { 
      measuretime: { 
       $gte: ISODate('2014-05-25'), 
       $lt: ISODate('2014-05-26') 
      }, 
      parameter_id: new ObjectId('54eb38fc70703cd29a8e9ae9') 
     } 
    }, 
    { 
     $group: { 
      _id: { parameter_id: '$parameter_id' }, 
      values: { $addToSet: '$value' } 
     } 
    } 
]); 

結果看起來是這樣的:

[ 
    { 
     "_id":{ 
     "parameter_id":"54eb38fc70703cd29a8e9ae9" 
     }, 
     "values":[ 
     10.15, 
     10.88, 
     10.57, 
     10.13, 
     10.72, 
     10.98, 
     10.84, 
     10.17, 
     10.36, 
     10.03, 
     10.14, 
     10.62, 
     10.46, 
     10.01, 
     10.18, 
     10.64, 
     10.12, 
     10.69, 
     10.33, 
     10.51, 
     10.26, 
     10.21, 
     10.45, 
     10.22, 
     10.43, 
     10.55, 
     10.41, 
     10.27, 
     10.25, 
     10.5, 
     10.06, 
     10.3, 
     10.39, 
     10.8, 
     10.23, 
     10.44, 
     10.99, 
     10.94, 
     11, 
     10.19, 
     10, 
     10.71, 
     10.85, 
     10.02, 
     10.59, 
     10.79, 
     10.07, 
     10.77, 
     10.74, 
     10.96, 
     10.31, 
     10.76, 
     10.1, 
     10.32, 
     10.65, 
     10.58, 
     10.49, 
     10.47, 
     10.48, 
     10.24, 
     10.52, 
     10.61, 
     10.83, 
     10.73, 
     10.28, 
     10.56, 
     10.11, 
     10.7, 
     10.97, 
     10.82, 
     10.91, 
     10.66, 
     10.93, 
     10.2, 
     10.9, 
     10.89, 
     10.4, 
     10.05, 
     10.95, 
     10.16, 
     10.78, 
     10.67, 
     10.08, 
     10.68, 
     10.81, 
     10.04, 
     10.09, 
     10.54, 
     10.87, 
     10.92, 
     10.63, 
     10.75, 
     10.35, 
     10.86, 
     10.6, 
     10.37, 
     10.53, 
     10.29, 
     10.38, 
     10.42, 
     10.34 
     ] 
    } 
] 

這很好,除了只有100的結果值,但count檢查時,它表明,應該有更多的(也是100看起來不像一個任意數字)。

db.measurements.count({ 
    measuretime: { 
     $gte: ISODate('2014-05-25'), 
     $lt: ISODate('2014-05-26') 
    }, 
    parameter_id: ObjectId('54eb38fc70703cd29a8e9ae9') 
}); 

返回:17286

那麼,有一些配置獲得超過100個結果?或者查詢完全錯誤?

回答

3

$addToSet運算符刪除重複項。看起來您在measurements中的原始文檔具有value字段的重複值,當使用$addToSet插入時,這些值將被丟棄。您應該使用$push運算符來嘗試您的查詢。有關$push運營商的更多信息,請在文檔中查看this page

+0

謝謝!解決了它! – Staeff 2015-02-24 15:40:01

+0

很高興幫助! – 2015-02-24 15:41:03

相關問題