(4)

您所在的位置:网站首页 王侃为什么姓王不姓张 (4)

(4)

2024-07-11 18:41| 来源: 网络整理| 查看: 265

核心

db.集合.find({查询条件},[{设置显示字段}])

已存在数据如图 在这里插入图片描述

带条件查询 db.fnfos.find({"url":"www.google.com"})

在这里插入图片描述

查询结果只显示个别字段

0表示不显示  1表示显示

db.fnfos.find({"url":"www.google.com"},{"_id":0});

在这里插入图片描述

db.fnfos.find({"url":"www.google.com"},{"_id":0,"url":1});

在这里插入图片描述

优雅显示 pretty()

列数多时,可看出效果

db.fnfos.find({"url":"www.google.com"},{"_id":0,"url":1}).pretty(); 关系查询 不等于$ne大于$gt小于$lt大于等于$gte小于等于$lte等于key:value 、$eq

准备操作案例集合

db.students.drop() db.students.insert({"name":"张三","sex":"男","age":19,"score":89,"address":"海淀区"}); db.students.insert({"name":"李四","sex":"女","age":20,"score":59,"address":"朝阳区"}); db.students.insert({"name":"王五","sex":"女","age":19,"score":99,"address":"西城区"}); db.students.insert({"name":"赵六","sex":"男","age":20,"score":100,"address":"东城区"}); db.students.insert({"name":"孙七","sex":"男","age":19,"score":20,"address":"海淀区"}); db.students.insert({"name":"王八","sex":"女","age":21,"score":0,"address":"海淀区"}); db.students.insert({"name":"刘九","sex":"男","age":19,"score":70,"address":"朝阳区"}); db.students.insert({"name":"钱十","sex":"女","age":21,"score":56,"address":"西城区"});

在这里插入图片描述

等于 db.students.find({"name":"张三"}).pretty();

在这里插入图片描述

db.students.find({"sex":"男"}).pretty();

在这里插入图片描述

小于 db.students.find({"age":{"$gt":19}}).pretty();

年龄大于19岁的学生 在这里插入图片描述

db.students.find({"score":{"$lte":60}}).pretty();

成绩小于等于60分的学生 在这里插入图片描述

不等于 db.students.find({"name":{"$ne":"王五"}}).pretty();

查询名字不是王五的学生 在这里插入图片描述

逻辑查询 与 操作

用逗号(,)分隔若干条件

db.students.find({"age":{"$gte":19,"$lte":20}}).pretty();

查询年龄大于等于19岁 并且 小于等于20岁的学生 在这里插入图片描述

非 操作 db.students.find({"age":{"$ne":19}}).pretty();

查询年龄不是19岁的学生 在这里插入图片描述

或 操作 db.students.find({ "$or":[ {"age":{"$gt":19}}, {"score":{"$gt":90}} ] }).pretty();

查询年龄大于19岁,或者成绩大于90分的学生信息 在这里插入图片描述

或非 操作 db.students.find({ "$nor":[ {"age":{"$gt":19}}, {"score":{"$gt":90}} ] }).pretty();

在这里插入图片描述

模运算

{$mod:[数字,余数]}

db.students.find({"age":{"$mod":[20,0]}}).pretty();

查询 年龄 20并且余数为0 的学生 在这里插入图片描述

db.students.find({"age":{"$mod":[20,1]}}).pretty();

查询 年龄 20并且余数为1 的学生 在这里插入图片描述

范围查询 在范围之中$in不在范围之中$nin db.students.find({"name":{"$in":["张三","李四","王五"]}}).pretty();

查询信息为 张三,李四,王五 的信息 在这里插入图片描述 不在范围之内

db.students.find({"name":{"$nin":["张三","李四","王五"]}}).pretty(); 数组(列表)查询

添加一些含有数组(列表)的案例操作的集合数据

db.students.insert({"name":"Wilson","sex":"男","age":19,"score":89,"address":"海淀区","course":["语文","数学","英语","音乐","政治"]}); db.students.insert({"name":"Wilson","sex":"男","age":19,"score":89,"address":"海淀区","course":["语文","数学"]}); db.students.insert({"name":"Wilson","sex":"男","age":19,"score":89,"address":"海淀区","course":["语文","数学","英语"]}); db.students.insert({"name":"Wilson","sex":"男","age":19,"score":89,"address":"海淀区","course":["英语","音乐","政治"]}); db.students.insert({"name":"Wilson","sex":"男","age":19,"score":89,"address":"海淀区","course":["语文","政治"]}); {"$all",[内容1,内容2]} db.students.find({"course":{"$all":["语文","数学"]}}).pretty();

查询同时参加语文和数学课程的学生

在这里插入图片描述 $all 可以用于查询数组,也可用于一个数据的匹配

db.students.find({"address":{"$all":["海淀区"]}}).pretty();

在这里插入图片描述

$size 数组(列表) 数目 db.students.find({"course":{"$size":2}}).pretty();

查询出参加两门课程的学生 在这里插入图片描述

$slice 控制 数组(列表) 返回数目 db.students.find({"age":19},{"course":{"$slice":2}}).pretty();

年龄为19岁所有学生信息,但课程只显示两门(前两门) 在这里插入图片描述 年龄为19岁所有学生信息,但课程只显示后两门,设置负数

db.students.find({"age":19},{"course":{"$slice":-2}}).pretty();

取中间两门课程

db.students.find({"age":19},{"course":{"$slice":[1,2]}}).pretty(); 利用 索引 查询集合中数组(列表)

key.index 方式定义索引 (0 起始)

db.students.find({"course.1":"数学"}).pretty();

查询数组(列表)中第二个内容(index = 1) 在这里插入图片描述

嵌套集合

准备案例操作的集合数据

db.students.insert({"name":"大拿 -A","sex":"男","age":19,"score":89,"address":"海淀区","course":["语文","数学","英语","音乐","政治"],"parents":[{"name":"大拿-A(父亲)","age":50,"job":"工人"},{"name":"大拿-A(母亲)","age":46,"job":"职员"}]}); db.students.insert({"name":"大拿 -B","sex":"男","age":19,"score":89,"address":"海淀区","course":["语文","数学"],"parents":[{"name":"大拿-B(父亲)","age":50,"job":"处长"},{"name":"大拿-B(母亲)","age":46,"job":"局长"}]}); db.students.insert({"name":"大拿 -C","sex":"男","age":19,"score":89,"address":"海淀区","course":["语文","数学","英语"],"parents":[{"name":"大拿-C(父亲)","age":50,"job":"工人"},{"name":"大拿-C(母亲)","age":46,"job":"局长"}]}); $elemMatch db.students.find({ "$and":[ {"age":{"$gte":19}}, {"parents":{"$elemMatch":{"job":"局长"}}} ] }).pretty();

查询出学生年龄大于等于19岁并且父母有人是局长的信息 在这里插入图片描述

判断字段是否存在 $exists

布尔值,true字段存在,false 字段不存在

db.students.find({"parents":{"$exists":true}}).pretty();

查询有 parents 字段的 学生信息 在这里插入图片描述

db.students.find({"course":{"$exists":false}}).pretty();

查询不具有 course 字段的学生信息 在这里插入图片描述

where 条件过滤 $where

虽然这种方式实现了数据查询,但是最大的缺点是将在MongoDB里面保存的BSON数据重新变成JavaScript的语法结构,这样的方式不方便使用数据库的索引,不建议此形式使用

db.students.find({"$where":"this.age>20"}).pretty();

查询年龄大于20岁的学生信息 在这里插入图片描述 $where 是可以简化的,这类的操作是属于进行每一行的信息判断,实际上对于数据量较大的操作并不方便使用

db.students.find("this.age>20").pretty();

在这里插入图片描述 完整的写法可以如下:

db.students.find(function(){ return this.age>20; }).pretty(); db.students.find({ "$where":function(){ return this.age>20; } }).pretty(); 查询多个判断 db.students.find({"$and":[ {"$where":"this.age>19"}, {"$where":"this.age


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3