我需要对整个集合执行$group
操作。此组阶段已达到100MB RAM使用量的极限。
$group阶段的RAM限制为100兆字节。默认情况下,如果阶段超过此限制,$group将产生一个错误。但是,为了允许处理大型数据集,请将allowDiskUse选项设置为true,以允许$group操作写入临时文件。
我不受RAM的限制,但我找不到如何提高内存使用限制有人知道如何配置这个限制吗
将allowDiskUse
设置为true将解决该问题,但我认为整个操作会慢得多,我想找到更好的解决方案。
{
$group: {
_id: {
producer: "$producer",
dataset:"$dataset",
featureOfInterest:"$_id.featureOfInterest",
observedProperty:"$_id.observedProperty"
},
documentId: {$push:"$documentId"}
}
}
这个$group
操作是在整个复杂对象(生产者和数据集)上执行的。我知道这个操作很昂贵,因为"它需要在生成之前扫描整个结果集,MongoDB至少必须存储组中每个元素的指针或索引。"我更喜欢这两个对象的uniqueId字段上的$group
。
之后,我如何使用唯一ID和$project
对对象进行$group我想在聚合管道的开头使用下面的组操作来获得与上面的组操作相同的结果:
{
$group: {
_id: {
producer: "$producer.producerId",
dataset:"$dataset.datasetId",
featureOfInterest:"$_id.featureOfInterest",
observedProperty:"$_id.observedProperty"
},
documentId: {$push:"$documentId"}
}
}
allowDiskUse
MongoDB中没有将聚合中的内存使用量增加到100mb以上的选项,因此在重管道中,您必须将标志设置为true。
但是
您可能有兴趣阅读MongoDB内存存储引擎
在命令行中使用内存存储引擎启动mongodb的示例
mongod --storageEngine inMemory --dbpath <path> --inMemorySizeGB <newSize>
Mongodb文档中的更多信息
https://docs.mongodb.com/manual/core/inmemory/
关于第二个问题-我没有得到。请张贴示例文件。