2013-02-14 33 views
0

我有mysql数据库谁是这样的:MongoDB的架构设计用于存储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", 
.....}, 
...... 
+0

数据是否会是什么样蒙戈现在?你有什么尝试?它看起来非常直接,可以转换成您想要的结构,尽管看起来您的文档中可能有无限的数据。文档仅限于16MB。 – WiredPrairie 2013-02-14 12:05:48

+1

为什么你想让你的数据看起来这样?这看起来可怕的解析和工作... – Philipp 2013-02-14 12:34:19

+0

我的同事谁将与这个数据库工作问我,如果我可以这样设计,他们认为它会更快工作 – 2013-02-14 14:08:36

回答

1

你MongoDB的结构是好当的比较MySQL来看看。但是如果你保存这样的信息,你必须循环读取数据。如果数据量变大,这个循环会减慢你的应用程序。

例如, 您需要“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 

两者都很难使用进一步的过程。我的意思是你必须在变量中保留更大的数组或更大的字符串。在阅读关于其他Keys(列)的相应信息时,该组合将增加,分别对应于“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... 
+0

如果他们不是程序员告诉他们谢谢,但不是感谢。请记住,如果9个月内有9名女性在9个月内有9个婴儿,统计平均需要1个月才能生下一个婴儿? – 2013-02-14 14:10:25

+1

好吧,我接受它。 MongoDB服务器不需要搜索来查找数据。但是,一旦您从MongoDB获得结果,就会花费在您的Web应用程序上,而这些努力会降低您的应用程序性能,有时甚至会导致应用程序崩溃。更好的选择将这些努力推向MongoDB。因此,您的应用可能会忙于提供信息,而不是生成这些信息。 – 2013-02-14 14:11:48

+0

okey,感谢您的建议:)我只用了一个星期就开始使用mongodb,所以我真的不知道选择哪种模式设计来提高查询的工作速度 – 2013-02-14 14:18:53