MongoDB之数据查询(嵌套集合)
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,在MongoDB数据库里面每一个集合数据可以继续保存其他的集合数据,例如有些人员保存家庭信息。范例:增加数据db.emp.insert({"name":"林A","sex":"男","age":22,
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
江苏提供网络安全工程资质
可能该数据库尚未激活 也可能
全国最好的网络安全
专业做app软件开发多少钱
数据库大作业逻辑结构设计
中国数据库分布
炒江湖菜谱数据库
开展网络安全手抄报比赛
网袜视频软件开发
服务器安全组有什么作用
邮储软件开发中心招聘信息
大公软件开发有限公司
上海共享单车软件开发公司
泗阳大型网络技术联系方式
辅料药理毒理数据库
云原生数据库哪个好
网络安全隐患整改会
中国国际版服务器中国端口
网络安全与执法属于计算机类
求生之路2最佳服务器掉线
软件开发常用考题
江苏电脑软件开发服务费
局域网共享服务器不稳定
数据库怎么导出
互联网科技行业典型公司
服务器设计行业
我的世界外置登录可以进服务器
软件开发sm薪资
中国互联网科技发达吗
塔城软件开发报价