autho" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Mongodb聯(lián)合查詢

系統(tǒng) 1746 0

在關(guān)系型數(shù)據(jù)庫(kù)中,通過連接運(yùn)算符可以實(shí)現(xiàn)多個(gè)表聯(lián)合查詢。而非關(guān)系型數(shù)據(jù)庫(kù)的特點(diǎn)是表之間屬于弱關(guān)聯(lián),Mongodb作為Nosql代表,其本身特性不建議對(duì)多Collection關(guān)聯(lián)處理,不過對(duì)于有些需要對(duì)多表關(guān)聯(lián)處理的需求,Mongodb也可以實(shí)現(xiàn)。主要分為兩種方式:簡(jiǎn)單手工關(guān)聯(lián)和DBRef方式關(guān)聯(lián)

?

1.簡(jiǎn)單手工關(guān)聯(lián)

下圖表示帖子和用戶兩個(gè)Collection的ER圖:

Mongodb聯(lián)合查詢

首先將authors集合中的用戶對(duì)象查詢出來,放在一個(gè)變量author中,代碼如下:

    > author=db.authors.findOne({name:"chenzhou"})
{
	"_id" : ObjectId("5030ba7621bdee44765b2147"),
	"name" : "chenzhou",
	"email" : "chenzhou1025@126.com"
}
  

通過用戶對(duì)象author來獲取帖子列表,代碼如下:

    > for(var post=db.posts.find({"author_name":author.name}); post.hasNext();){
... printjson(post.next().title);
... }
"Hello Mongodb"
"Hello World"
"Hello My Friend"
  

2.DBRef方式關(guān)聯(lián)

DBRef就是在兩個(gè)Collection之間定義的一個(gè)關(guān)聯(lián)關(guān)系,比如,把CollectionB "_id"列的值存在CollectionA的一個(gè)列中,然后通過CollectionA這個(gè)列中所存的值在CollectionB中找到相應(yīng)的記錄。

示例:模擬用戶發(fā)帖的過程,看一看如何將帖子表和用戶表建立關(guān)聯(lián)。

步驟1:取得當(dāng)前用戶信息,代碼如下:

    > author=db.authors.find({name:"chenzhou"})[0]
{
	"_id" : ObjectId("5030ba7621bdee44765b2147"),
	"name" : "chenzhou",
	"email" : "chenzhou1025@126.com"
}
  

步驟2:發(fā)帖子并做關(guān)聯(lián),代碼如下:?

    > db.posts.insert({"title":"Hello Mongodb DBRef1",
... authors:[new DBRef('authors',author._id)]})
> db.posts.insert({"title":"Hello Mongodb DBRef2",
... authors:[new DBRef('authors',author._id)]})
>
  

步驟3:通知帖子查找用戶信息,代碼如下:

    >  db.posts.find({"title":"Hello Mongodb DBRef1"})[0].authors[0].fetch()
{
	"_id" : ObjectId("5030ba7621bdee44765b2147"),
	"name" : "chenzhou",
	"email" : "chenzhou1025@126.com"
}
  

通過這個(gè)例子可以看出,DBRef就是從文檔的一個(gè)屬性指向另一個(gè)文檔的指針。

關(guān)于DBRef詳細(xì)信息,可以參見官網(wǎng)說明: http://docs.mongodb.org/manual/applications/database-references/ ??

?

Mongodb聯(lián)合查詢


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 开封县| 泰兴市| 宜兰市| 麟游县| 青田县| 禄丰县| 太原市| 贵州省| 沾化县| 焉耆| 阳江市| 大埔县| 象山县| 托克逊县| 望谟县| 滨州市| 龙州县| 四子王旗| 巴青县| 泌阳县| 宣威市| 五大连池市| 于都县| 冕宁县| 涿州市| 宜城市| 宿松县| 鹤峰县| 南安市| 高唐县| 汝城县| 阿城市| 天长市| 鹤岗市| 山阳县| 江达县| 黑山县| 通辽市| 扶风县| 漳平市| 正宁县|