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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 巢狀子查詢巢狀
- 對比SQL中簡單巢狀查詢與非巢狀查詢CFSQL巢狀
- EleasticSearch6.0 巢狀查詢AST巢狀
- MySQL——優化巢狀查詢和分頁查詢MySql優化巢狀
- 巢狀關聯會查詢兩次巢狀
- Mysql 巢狀查詢100例子MySql巢狀
- es中如何使用巢狀物件查詢巢狀物件
- MyBatis(六) sql片段定義、級聯查詢、巢狀查詢MyBatisSQL巢狀
- MongoDB資料庫中查詢資料(下)MongoDB資料庫
- 在MongoDB資料庫中查詢資料(上)MongoDB資料庫
- Mysql中的巢狀子查詢問題QSBSMySql巢狀
- openguass 資料庫狀態查詢資料庫
- Python全棧MongoDB資料庫(資料的查詢)Python全棧MongoDB資料庫
- Python全棧 MongoDB 資料庫(資料的查詢)Python全棧MongoDB資料庫
- MongoDB - 聚合查詢MongoDB
- python資料庫-mongoDB的高階查詢操作(55)Python資料庫MongoDB
- Elasticsearch 7.x Nested 巢狀型別查詢 | ES 乾貨Elasticsearch巢狀型別
- MongoDB 如何實現巢狀子文件分組MongoDB巢狀
- 分層資料 Hierarchical Data 探索 (3.巢狀集合模型) 無限極分類巢狀模型
- 資料庫全表查詢之-分頁查詢優化資料庫優化
- ❖ MongoDB 高階查詢MongoDB
- mongodb慢查詢分析MongoDB
- Mongodb高階查詢MongoDB
- MongoDB查詢條件MongoDB
- MongoDB查詢總結MongoDB
- 【YashanDB資料庫】yasboot查詢資料庫狀態時顯示資料庫狀態為off資料庫boot
- 樹狀資料結構儲存方式——查詢篇資料結構
- 【java】【集合】去除ArrayList中的元素、ArrayList巢狀ArrayListJava巢狀
- MongoDB查詢內嵌文件MongoDB
- MongoDB 常用查詢語法MongoDB
- MongoDB日期型別查詢MongoDB型別
- MongoDB慢查詢與索引MongoDB索引
- Mongodb 關聯表查詢MongoDB
- MySQL - 資料查詢 - 簡單查詢MySql
- NET 集合分頁查詢
- MyBatis從入門到精通(十二):使用collection標籤實現巢狀查詢MyBatis巢狀
- MyBatis從入門到精通(十):使用association標籤實現巢狀查詢MyBatis巢狀
- Laravel Baum 巢狀集合模型中文文件翻譯-部分Laravel巢狀模型
- Java ——MongDB 插入資料、 模糊查詢、in查詢Java