mongodb中通过mongoose的ram消耗

1hdlvixo  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(340)

嗨,我是mongo db聚合的新手。我的要求是将发送到服务器的设备gps数据保存到我的mongodb集合中,即gps数据。目前我使用mongoose的gps数据模式如下

SerialNo:{
        type:Number,
        required:true,
        index:true
   },

  Loc: {
        type: [Number], // [<longitude>, <latitude>]
        index: '2d',// create the geospatial index
        required:true
  },

  Time:{
         type:Date
 },

  Speed:{
            type:Number,
            default:0.0                
 },      

  Message_length:{
            type:Number 
 },   

  No_Satellites:{
            type:Number
  },

  Course:{
            type:Number
  },  

  Direction:{
            type:String
  },  

  gpsLocked:{
            type:Boolean
  },

  isRealTime:{
             type:Boolean           
  },

  createdAt:{
            type:Date,
            default:Date.now
  }

我发现这对我的设计可能是不可行的,所以在mongodb网站上搜索了很多,我发现这个链接使用聚合框架和hadoop分析时间序列数据,我发现他们使用的文档结构与我的要求类似,如下所示

data:[
   {speed:NAN,time:NAN},
   {speed:NAN,time:NAN},
   {speed:NAN,time:NAN}
]

我的主要问题是,如果我将loc和timestamp转换为上述格式,那么当我将500个gps数据保存到一个文档中时,我是否会节省由于索引而消耗的内存,或者由于索引而消耗的内存是否与将500个不同的文档保存到我的集合中相同?

igsr9ssn

igsr9ssn1#

如果要转换为这种格式

data:[
   {Loc:NAN,time:NAN},
   {Loc:NAN,time:NAN},
]

如果要使用 Loc . 这将是一个多键索引
总体索引大小可能更大,因为在这种情况下,mongodb必须在数组中索引文档。在前面的例子中,它只需要索引 Loc 分开。
如果您使用 SerialNo 以及 data .
但是,您的更新将是高效的,因为您只需要更新数据中的一个条目。
注意mongodb对每个文档的限制是16mb。我不确定你想在一个文档中添加多少时间戳。

相关问题