0

我有一个看起来像这样的 mysql 数据库:

    ----|-----------|--------|------------|---------|----------|---------|----------|----------|
   _id| Segment_ID| Origin | Destination| Aircraft| Latitude1|Latitude2|Longitude1|Longitude2|
    ----|-----------|--------|------------|---------|----------|---------|----------|----------|
     1  | LFAQ-GILTO| LFAQ   | KURIS      | A3ST    | 49.56    | 2.5     | 49.97    | 2.33     |
    ----|-----------|--------|------------|---------|----------|---------|----------|----------|
   1    |GILTO-EVX  | LFAQ   | KURIS      | A3ST    | 49.97    | 2.33    | 50.70    | 2.12     |
    ----|-----------|--------|------------|---------|----------|---------|----------|----------|
    1   |EVX-KURIS  | LFAQ   | KURIS      | A3ST    | 50.70    | 2.12    | 52.00    | 2.07     |
    ----|-----------|--------|------------|---------|----------|---------|----------|----------|

我想将我的数据库从 mysql 迁移到 mongodb。我使用 mongify 将我的数据库迁移到 mongodb 的嵌入式集合中。我对此没有任何问题。但是,我想做下一个:1.迁移到 mongodb 中的嵌入式集合并将列作为数组值。2. 我希望我的 mongodb 集合看起来像这样

Flight: { 
  id:1 {
  "Segment_ID": "LFAQ-GILTO, GILTO-EVX, EVX-KURIS",
  "Origin": "LFAQ, LFAQ, LFAQ",  
  "Destination": "KURIS, KURIS, KURIS",
  "Aircraft" : "A3ST, A3ST, A3ST",
  "Latitude1" : "49.56, 49.97, 50.70",
etc.....

有什么办法可以让它工作吗?

现在我的数据库看起来像:

Flight: {
id1: {
"0": {
"Segment_ID": "LFAQ-GILTO",
"Origin": "LFAQ",
"Destination": KURIS",
"Aircraft" : "A3ST",
"LAtitude1": "49.56",
.......
},
"1": {
"Segment_ID": "LFAQ-GILTO",
"Origin": "LFAQ",
"Destination": KURIS",
"Aircraft" : "A3ST",
"LAtitude1": "49.56",
.....
},
"2": {
"Segment_ID": "LFAQ-GILTO",
"Origin": "LFAQ",
"Destination": KURIS",
"Aircraft" : "A3ST",
"LAtitude1": "49.56",
.....},
......
4

1 回答 1

1

与 MySql 相比,您的 MongoDB 结构看起来不错。但是,如果您要保留这样的信息,则必须在读取数据时进行循环。如果数据量变大,这个循环会减慢你的应用程序。

例如,您想要“Segment_ID”为“GILTO-EVX”的行,在 MongoDB 中,您有针对“Segment_ID”数组的循环数据。因为 MongoDB 是返回父键及其所有值,所以即使是单个值也符合您的条件。在上述情况下,MongoDB 会给你

{ "Segment_ID": ["LFAQ-GILTO", "GILTO-EVX", "EVX-KURIS", ....] } //If you are keep values in array
{ "Segment_ID": "LFAQ-GILTO, GILTO-EVX, EVX-KURIS, ....." } //If you are keep values as string with comma seperated

两者都难以使用进一步的过程。我的意思是你必须在你的变量中保留更大的数组或更大的字符串。在读取与“Segment_ID = GILTO-EVX”相关的其他键(列)上的相应信息时,这个复杂度将增加。在这里,我的建议是重组您的 MongoDB 文档,如下所示,

//Doc 1
{ 
  "Flight_id" : 1,
  "Segment_ID": "LFAQ-GILTO",
  "Origin": "LFAQ",  
  "Destination": "KURIS",
  "Aircraft" : "A3ST",
}
//Doc 2
{ 
  "Flight_id" : 1,
  "Segment_ID": "GILTO-EVX",
  "Origin": "LFAQ",  
  "Destination": "KURIS",
  "Aircraft" : "A3ST",
}
//Doc3 and more...
于 2013-02-14T12:30:48.327 回答