Mongodb聯合查詢

2021-07-16 20:33:11 字數 1135 閱讀 9780

在關係型資料庫中,通過連線運算子可以實現多個表聯合查詢。而非關係型資料庫的特點是表之間屬於弱關聯,mongodb作為nosql代表,其本身特性不建議對多collection關聯處理,不過對於有些需要對多表關聯處理的需求,mongodb也可以實現。主要分為兩種方式:簡單手工關聯和dbref方式關聯

1.簡單手工關聯

下圖表示帖子和使用者兩個collection的er圖:

首先將authors集合中的使用者物件查詢出來,放在乙個變數author中,**如下:

shell**  

> author=db.authors.findone()    

通過使用者物件author來獲取帖子列表,**如下:

shell**  

> for(var post=db.posts.find(); post.hasnext();)  

"hello mongodb"

"hello world"

"hello my friend"

2.dbref方式關聯

dbref就是在兩個collection之間定義的乙個關聯關係,比如,把collectionb "_id"列的值存在collectiona的乙個列中,然後通過collectiona這個列中所存的值在collectionb中找到相應的記錄。

示例:模擬使用者發帖的過程,看一看如何將帖子表和使用者表建立關聯。

步驟1:取得當前使用者資訊,**如下:

shell**  

> author=db.authors.find()[0]    

步驟2:發帖子並做關聯,**如下: 

shell**  

> db.posts.insert()  

> db.posts.insert()  

>  

步驟3:通知帖子查詢使用者資訊,**如下:

shell**  

>  db.posts.find()[0].authors[0].fetch()    

通過這個例子可以看出,dbref就是從文件的乙個屬性指向另乙個文件的指標。

原文出處:

MongoDB聯合查詢 摘自網路

1 簡單手工關聯 首先將結果查詢出來放到乙個變數裡面,然後再查詢 u db.user.findone for var p db.postings.find p.hasnext 2 dbref方式關聯 例子 步驟1 取得當前使用者資訊 db.user.insert u1 db.user.find 0 ...

Execl ADO SQL 聯合查詢

原題目 如何從兩張excel表中取數,生成第三張表?表一 a姓名 b身份證號 c金額1 張三642120197409020031 21002李四 552120197509020031 31003王五 693120197408020031 20004陳三 642202197409020031 1000...

SQL 聯合查詢

use xsgl go select from student select from cause select from exam 聯合查詢 join on 預設為inner,如果有right or left 那麼就指的是外聯,outer 可以不寫 1.最長見為內聯 table1 inner jo...