MongoDB之数据查询(嵌套集合)
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,在MongoDB数据库里面每一个集合数据可以继续保存其他的集合数据,例如有些人员保存家庭信息。范例:增加数据db.emp.insert({"name":"林A","sex":"男","age":22,
千家信息网最后更新 2026年11月01日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" : "局长"
}
]
}
由于这种查询的时候条件比较麻烦,所以如果可能,尽量别搞这么复杂。
母亲
父亲
语文
北京
数据
局长
工人
政治
数学
查询
信息
农民
范例
英语
复杂
之中
人员
内容
处长
家庭
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海喔噻互联网科技有限公司
互联网科技公司简介
深圳科技互联网
北京互联网络科技有限公司
互联网科技logo设计
友谊互联网络科技
互联网 科技服务平台
盛创互联网科技有限公司
青海省互联网新科技
成都玖崟互联网科技有限公司乐商圈怎么样
欧洲十大科技互联网公司
华服互联网科技官网
互联网金融科技展
河南住房之家互联网科技
徐州市互联网科技有限公司
互联网安防科技感
郑州欣桑互联网科技有限公司
唯美互联网科技
易租星互联网科技有限公司
银川新华互联网科技学校原画
南京欣网互联网络科技
广州万易互联网科技有限公司
互联网科技工作委员会副主任毛军
科技互联网龙头
壹账通互联网科技
深圳期待互联网科技
阿里巴巴算科技企业还是互联网
高科技互联网套路
易企秀互联网科技是做什么的
杭州科技互联网公司有哪些