我有我想要執行聚合的集合。幾周前,一切都很完美,並且因爲我添加了一些文檔(具有相同的模式)。但是,當我嘗試彙總我的收藏時,我有16Mb的BSON文檔異常被引發限制。Mongodb - 16Mb限制與展開期間的聚合
最令人驚訝的是,我試圖確定何時在聚合中達到限制,並且在第一步達到限制時,我只是簡單地展開部分文檔。
我的問題是,如何存儲的文件(這是大小小於16Mb的性質)可以成爲超過16Mb後展開?請注意,當我嘗試使用InsertBatch方法將結果光標插入另一個集合時,會引發異常。我也嘗試枚舉遊標,但我有相同的異常,如果我嘗試訪問第一個文檔相同。
[編輯]:我使用的MongoDB版本2.6.1和C#驅動程序的版本1.9.2
[編輯]:我使用的文件類似於
{
"_id" : ObjectId("53ff90e8dcb48a09f090f291"),
"Val1" : 10
"Val2" : true,
"Mesure" : {
"_id" : ObjectId("53ff90e8dcb48a09f090f284"),
"Calibration" : {
"CalibrationDate" : ISODate("2014-08-28T16:29:59.335-04:00"),
"Expected" : [
{
"Bin" : 12,
"PositionCalibrated" : 0,
"PositionExpected" : 0,
"PositionMax" : 0,
"PositionMin" : 0,
"PositionStd" : 0,
"PositionTab" : [
0,
0,
0
],
"PositionTolerance" : 1
},
{
"Bin" : 11,
"PositionCalibrated" : 406.113044449032,
"PositionExpected" : 401.1,
"PositionMax" : 406.113044449032,
"PositionMin" : 406.113044449032,
"PositionStd" : 5.684341886080802e-014,
"PositionTab" : [
406.113044449032,
406.113044449032,
406.113044449032
],
"PositionTolerance" : 1
},
{
"Bin" : 7,
"PositionCalibrated" : 454.9231746931026,
"PositionExpected" : 431.1,
"PositionMax" : 454.9231746931027,
"PositionMin" : 454.9231746931027,
"PositionStd" : 5.684341886080802e-014,
"PositionTab" : [
454.9231746931027,
454.9231746931027,
454.9231746931027
],
"PositionTolerance" : 1
}
],
"_id" : ObjectId("53ff9143dcb48a09f090f2ae")
}
},
"PositionMeasured" : 407.23645821
}
我使用C#驅動程序的聚合管道。我想要做幾個聚合步驟(展開,排序,組合,項目等),但第一步是展開這些元素。使用的代碼如下:
var UnwindCalib = new BsonDocument("$unwind", "$Mesure.Calibration.Expected");
var pipeline = new[] { UnwindCalib };
var args = new AggregateArgs();
args.Pipeline = pipeline;
args.AllowDiskUse = true;
var result = myCollection.Aggregate(args);
resultsCollection.InsertBatch(result); <----- I've got an error here.
展開後的目標是使校準中的預期項目與當前項目匹配。
要計算展開後的輸出大小,可以將其近似爲單個文檔大小*展開數組中的元素總數。 – displayName 2014-08-29 02:29:15
你使用什麼聚合查詢?它不是簡單地展開多個文件? – Kenneth 2014-08-29 06:48:32
請包括管道和您如何知道哪個管道階段導致問題的描述。 – wdberkeley 2014-08-29 07:56:55