2014-05-14 109 views
0

我是MongoDB的新用戶。從MongoDB查詢中獲取價值

當我做了find()db.users,我回來的物體像這樣:

{"_id" : ObjectId("5373c8779c82e0955aadcddc"), "username": "example"} 

如何這個文件鏈接到另一個文件?我正在使用命令行mongo shell。

例如,我想將db.person中的人與屬性owner關聯在db.car中的汽車物體中。

+0

你能說說「鏈接」嗎? mongo不支持連接的想法,如果這就是你要求的... – pennstatephil

+0

@pennstatephil澄清我的問題一點點 – mushroom

回答

0

所以它聽起來像你正在嘗試做一個連接,這是mongo不支持的。它是什麼確實支持是嵌入。所以,根據你想做什麼,你可以嵌入汽車的名單,一個人擁有...例如:

{ 
    id: (whatever), 
    username: phil, 
    cars: [ 
      {make: honda, model: civic, mileage: 44000}, 
      {make: ford, model: focus, mileage: 56000} 
      ] 
} 

或者,你可以鏈接到ID列表在您的汽車收藏:

{ 
    id: (whatever), 
    username: phil, 
    cars: [ 
      123, 
      456 
      ] 
} 

但是這樣效率不高,因爲你必須做更多的發現才能得到每輛車的信息 - 這就是爲什麼要嵌入岩石!

這裏詳細介紹一下:MongoDB relationships: embed or reference?

+0

如果一輛車可以由兩個用戶擁有會發生什麼?你是否必須更新兩個用戶的汽車,或者更新另一個更新? – mushroom

+1

您可以使用我概述的ID策略,或者是,只更新該車的每個實例。或者,如果您更關心通過汽車搜索而不是所有者,您可以將其反向並在每個汽車條目中嵌入所有者列表......但是,如果所有者信息發生變化,您將需要再次更新每個實例。 – pennstatephil

+0

@mushroom添加了一個關於嵌入和引用的真正好問題的鏈接,你可能想看看:) – pennstatephil