【问题标题】:Mongoose/Mongo structure for a data map数据映射的 Mongoose/Mongo 结构
【发布时间】:2014-09-09 02:39:00
【问题描述】:

您好,我有一些数据,我需要一些帮助来找到正确的数据结构来显示它。我的目标是制作一张像上图一样的地图。不同的物理站点会有纬度和经度信息,但圆形半径将由每个站点的不同统计数据确定。用户将能够选择他们想要查看的数据集。大约有 26 组数据。只有一组位置。

我的数据如下所示:

地点(约 5000 件)

var locSchema = mongoose.Schema({
 name : 'string',
 siteID : 'number',
 address1 : 'string',
 address2 : 'string',
 loc: {type: [Number], index: '2dsphere'}
});

具体数据(约12000条)

var dataSchema = mongoose.Schema({
  providerNumber : "number",  //The "siteID" of the site.
  date : "date",
  volume : "number",
  cost : "number",
  label : "string",  //There are 26 different stats each with a different label
  siteID : "oid"  //The oid of the site
});

我的第一个猜测是它们应该是一个集合,每条数据都存储为一个数组:

name : 'string',
siteID : 'number',
address1 : 'string',
address2 : 'string',
loc: {type: [Number], index: '2dsphere'},
data : [
   {
     providerNumber : "number",  //The "siteID" of the site.
     date : "date",
     volume : "number",
     cost : "number",
     label : "string",  //There are 26 different stats each with a different label
     siteID : "oid"  //The oid of the site
   },
   ...
]

但我不确定如何在 Mongoose 中创建这种数据结构,尤其是对象数组。此外,可能会有多组更新的数据需要可视化。

所以我的问题是: 1. 该数据的最佳结构是什么? 2. 在 Mongoose 中创建它的语法是什么? 3. 关于使其可扩展的任何建议?

【问题讨论】:

  • 这是否意味着每个位置有 2-3 个特定数据?数据多久更新一次?数据将如何被查询?是否总是将其全部拉回,还是您经常只提取部分数据?
  • 我有每个位置的 20 - 30 条特定数据。我认为数据将每隔几个月更新一次,而不是经常更新。现在我正在查询整个位置集合并根据纬度和经度进行限制。我正在制作一堆与数据相关的图表,其中大部分将关注一个单独的位置。

标签: node.js mongodb mongoose


【解决方案1】:

我倾向于保持 mongo 中的数据尽可能平坦和非规范化。我在更新和维护子文档时遇到了问题,尤其是数组。我还喜欢根据最常使用的数据来建模我的数据。我的偏好是这样的:

var schema = mongoose.Schema({
  name: String,
  siteID: Number,
  address1: String,
  address2: String
  loc: { type: [Number], index: '2dsphere' }
  date: Date,
  volume: Number,
  cost:  Number,
  label: String
});

这意味着您将拥有一些重复的数据(名称、地址 1 等),但我认为如果您对 dataSchema 部分的操作比对 locSchema 的操作更多,这是值得的。现在添加/删除/更新数据要简单得多。您可以使用mongo aggregation 对数据进行分组和构建您想要的数据。

【讨论】:

    猜你喜欢
    • 2018-05-07
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多