天天看點

MongoDB-樹形結構

樹形結構

在 MongoDB 中我們除了可以使用 '内嵌式結構' 和 '規範式結構' 來表示資料的關系以外, 由于MongoDB資料的靈活性, 我們還可以使用'樹形結構'來表示資料之間的關系。

樹形結構概述

Database
               |
     |--------------------|
 Relational           No-Relational
     |          |-----------|-------------|
   MySQL      Key-Value                Document
                |                         |
              Redis                    MongoDB      

對于經常需要查詢子節點的資料可以存儲如以下的資料結構來表示:

{name:'Database', parent:null}
{name:'No-Relational', parent:'Database'}
{name:'Document', parent:'No-Relational'}
{name:'MongoDB', parent:'Document'}
{name:'Key-Value', parent:'No-Relational'}
{name:'Redis', parent:'Key-Value'}      

例如: 我們要查詢非關系型資料庫有幾種類型, 我們可以使用 ​

​find({parent:'No-Relational'})​

​。

對于經常需要查詢父節點的資料可以存儲如下的資料結構來表示:

{name:'Database', children:['Relational', 'No-Relational']}
{name:'No-Relational', children:['Key-Value', 'Document']}
{name:'Document', children:['MongoDB']}
{name:'MongoDB', children:[]}      

例如: 我們要查詢MongoDB是什麼類型的的資料, 我們可以使用 ​

​find({children:{$in:['MongoDB']}})​

​。

對于經常查詢祖先或者後代節點的資料的存儲結構表示:

{name:'Database', ancestors:[]}
{name:'No-Relational', ancestors:['Database']}
{name:'Document', ancestors:['Database', 'No-Relational']}
{name:'MongoDB', ancestors:['Database', 'No-Relational', 'Document']}      

例如: 我們要查詢MongoDB的祖先有哪些, 我們可以使用 ​

​find({name:'MongoDB'})​

​​,我們要查詢Database的後代有哪些, 我們可以使用 ​

​find({ancestors:{$in:['Database']}}})​

​。

繼續閱讀