MongoDB之資料查詢(巢狀集合)
在MongoDB資料庫裡面每一個集合資料可以繼續儲存其他的集合資料,例如有些人員儲存家庭資訊。
範例:增加資料
db.emp.insert({"name":"林A","sex":"男","age":22,"sal":8000,"loc":"北京","course":["語文","數學","英語","音樂","政治"],"parents":[{"name":"林A父親","age":50,"job":"農民"},{"name":"林A母親","age":49,"job":"工人"}]});
db.emp.insert({"name":"林B","sex":"男","age":30,"sal":8000,"loc":"北京","course":["語文","數學"],"parents":[{"name":"林B父親","age":55,"job":"工人"},{"name":"林B母親","age":52,"job":"農民"}]});
db.emp.insert({"name":"林C","sex":"男","age":35,"sal":8000,"loc":"北京","course":["語文","數學","英語"],"parents":[{"name":"林C父親","age":60,"job":"工人"},{"name":"林C母親","age":59,"job":"職員"}]});
db.emp.insert({"name":"林D","sex":"男","age":28,"sal":8000,"loc":"北京","course":["語文","數學","政治"],"parents":[{"name":"林D父親","age":58,"job":"局長"},{"name":"林D母親","age":54,"job":"處長"}]});
db.emp.insert({"name":"林E","sex":"男","age":40,"sal":8000,"loc":"北京","course":["語文","政治"],"parents":[{"name":"林E父親","age":70,"job":"工人"},{"name":"林E母親","age":68,"job":"局長"}]});
此時的內容是巢狀的集合,而這種集合的資料的判斷只能透過“$elemMatch”來完成。
範例:查詢出父母之中有局長的資訊
> db.emp.find({"$and":[{"age":{"$gte":30}},{"parents":{"$elemMatch":{"job":"局長"}}}]}).pretty();
{
"_id" : ObjectId("599148bf0184ff511bf02b95"),
"name" : "林E",
"sex" : "男",
"age" : 40,
"sal" : 8000,
"loc" : "北京",
"course" : [
"語文",
"政治"
],
"parents" : [
{
"name" : "林E父親",
"age" : 70,
"job" : "工人"
},
{
"name" : "林E母親",
"age" : 68,
"job" : "局長"
}
]
}
由於這種查詢的時候條件比較麻煩,所以如果可能,儘量別搞這麼複雜。
範例:增加資料
db.emp.insert({"name":"林A","sex":"男","age":22,"sal":8000,"loc":"北京","course":["語文","數學","英語","音樂","政治"],"parents":[{"name":"林A父親","age":50,"job":"農民"},{"name":"林A母親","age":49,"job":"工人"}]});
db.emp.insert({"name":"林B","sex":"男","age":30,"sal":8000,"loc":"北京","course":["語文","數學"],"parents":[{"name":"林B父親","age":55,"job":"工人"},{"name":"林B母親","age":52,"job":"農民"}]});
db.emp.insert({"name":"林C","sex":"男","age":35,"sal":8000,"loc":"北京","course":["語文","數學","英語"],"parents":[{"name":"林C父親","age":60,"job":"工人"},{"name":"林C母親","age":59,"job":"職員"}]});
db.emp.insert({"name":"林D","sex":"男","age":28,"sal":8000,"loc":"北京","course":["語文","數學","政治"],"parents":[{"name":"林D父親","age":58,"job":"局長"},{"name":"林D母親","age":54,"job":"處長"}]});
db.emp.insert({"name":"林E","sex":"男","age":40,"sal":8000,"loc":"北京","course":["語文","政治"],"parents":[{"name":"林E父親","age":70,"job":"工人"},{"name":"林E母親","age":68,"job":"局長"}]});
此時的內容是巢狀的集合,而這種集合的資料的判斷只能透過“$elemMatch”來完成。
範例:查詢出父母之中有局長的資訊
> db.emp.find({"$and":[{"age":{"$gte":30}},{"parents":{"$elemMatch":{"job":"局長"}}}]}).pretty();
{
"_id" : ObjectId("599148bf0184ff511bf02b95"),
"name" : "林E",
"sex" : "男",
"age" : 40,
"sal" : 8000,
"loc" : "北京",
"course" : [
"語文",
"政治"
],
"parents" : [
{
"name" : "林E父親",
"age" : 70,
"job" : "工人"
},
{
"name" : "林E母親",
"age" : 68,
"job" : "局長"
}
]
}
由於這種查詢的時候條件比較麻煩,所以如果可能,儘量別搞這麼複雜。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28536251/viewspace-2144297/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫 - 連線查詢、巢狀查詢、集合查詢資料庫巢狀
- 資料庫查詢優化:巢狀查詢資料庫優化巢狀
- MongoDB之資料查詢操作MongoDB
- 巢狀子查詢巢狀
- MongoDB之資料查詢(資料排序)MongoDB排序
- MongoDB之資料查詢(陣列)MongoDB陣列
- 對比SQL中簡單巢狀查詢與非巢狀查詢CFSQL巢狀
- EleasticSearch6.0 巢狀查詢AST巢狀
- Sql Server系列:巢狀查詢SQLServer巢狀
- 集合框架-集合的巢狀遍歷(HashMap巢狀HashMap)框架巢狀HashMap
- 集合框架-集合的巢狀遍歷(HashMap巢狀ArrayList)框架巢狀HashMap
- 集合框架-集合的巢狀遍歷(ArrayList巢狀HashMap)框架巢狀HashMap
- 集合框架-集合的巢狀遍歷(多層巢狀)框架巢狀
- 集合的巢狀巢狀
- MongoDB之資料查詢(分頁顯示)MongoDB
- MongoDB之資料查詢(正規表示式)MongoDB
- MongoDB之資料查詢(關係運算)MongoDB
- MongoDB之資料查詢(邏輯運算)MongoDB
- MongoDB之資料查詢(範圍運算)MongoDB
- MongoDB之資料查詢(欄位判斷)MongoDB
- MySQL——優化巢狀查詢和分頁查詢MySql優化巢狀
- Mysql 巢狀查詢100例子MySql巢狀
- MongoDB之資料查詢(where條件過濾)MongoDB
- 【SQL查詢】集合查詢之INTERSECTSQL
- es中如何使用巢狀物件查詢巢狀物件
- 巢狀關聯會查詢兩次巢狀
- SQL語句巢狀查詢問題SQL巢狀
- Access/VBA/Excel-13-巢狀查詢Excel巢狀
- [冷楓推薦]:資料庫操作,內外聯查詢,分組查詢,巢狀查詢,交叉查詢,多表查詢,語句小結。資料庫巢狀
- 集合框架-集合的巢狀遍歷框架巢狀
- MyBatis(六) sql片段定義、級聯查詢、巢狀查詢MyBatisSQL巢狀
- MongoDB資料庫中查詢資料(下)MongoDB資料庫
- 在MongoDB資料庫中查詢資料(上)MongoDB資料庫
- MongoDB小技巧之如何使用帶下劃線的集合名查詢MongoDB
- Mysql中的巢狀子查詢問題QSBSMySql巢狀
- openguass 資料庫狀態查詢資料庫
- Transformation之Subquery Un-nesting(子查詢的非巢狀)SU【六】ORM巢狀
- thinkphp 資料庫使用巢狀子查詢時,閉包用到外層表別名PHP資料庫巢狀