05-MongoDB数据查询

05-MongoDB数据查询


基本查询

find():查询

示例:

db.集合名称.find({条件文档})
db.sub.find()
{
    "_id" : ObjectId("5a9cecc9ca0d48d805e47b14"),
    "title" : "linux",
    "count" : 2.0
}

{
    "_id" : ObjectId("5a9cecd0ca0d48d805e47b15"),
    "title" : "sql",
    "count" : 3.0
}

findOne():查询,只返回一个

db.集合名词.findOne({条件文档})

示例:

db.sub.findOne({title:'java'})
{
    "_id" : ObjectId("5a9cecd7ca0d48d805e47b16"),
    "title" : "java",
    "count" : 5.0
}

pretty():将结果格式化

db.集合名词.find({条件文档}).pretty()

示例:

 db.sub.find().pretty()
{
    "_id" : ObjectId("5a9cecc9ca0d48d805e47b14"),
    "title" : "linux",
    "count" : 2
}
{
    "_id" : ObjectId("5a9cecd0ca0d48d805e47b15"),
    "title" : "sql",
    "count" : 3
}
{
    "_id" : ObjectId("5a9cecd7ca0d48d805e47b16"),
    "title" : "java",
    "count" : 5
}

比较运算符

序号符号含义
1等于默认用等于判断,没有运算符
2$lt小于
3$lte小于或者等于
4$gt大于
5$gte大于或者等于
6$ne不等于

小于:

db.sub.find({count:{$lt:3}})
{
    "_id" : ObjectId("5a9cecc9ca0d48d805e47b14"),
    "title" : "linux",
    "count" : 2.0
}

大于等于:

db.sub.find({count:{$gte:2}})
{
    "_id" : ObjectId("5a9cecc9ca0d48d805e47b14"),
    "title" : "linux",
    "count" : 2.0
}
{
    "_id" : ObjectId("5a9cecd0ca0d48d805e47b15"),
    "title" : "sql",
    "count" : 3.0
}
{
    "_id" : ObjectId("5a9cecd7ca0d48d805e47b16"),
    "title" : "java",
    "count" : 5.0
}
{
    "_id" : ObjectId("5a9ced2aca0d48d805e47b17"),
    "title" : "c",
    "count" : 6.0
}

逻辑运算符、范围运算符

序号逻辑运算符含义
1逻辑与查询时多个调价链接,无需运算符
2or逻辑或
3$in在某个范围内
4$nin不在某个范围内

示例:

逻辑与:

查询count 大于 2且课程名为sql的课程

db.sub.find({count:{$gte:2},title :"sql"})
/* 1 */
{
    "_id" : ObjectId("5a9cecd0ca0d48d805e47b15"),
    "title" : "sql",
    "count" : 3.0
}

逻辑或$or:

查询title为linux或者为sql的课程

db.sub.find({$or:[{title:"linux"},{title:"sql"}]})
{
    "_id" : ObjectId("5a9cecc9ca0d48d805e47b14"),
    "title" : "linux",
    "count" : 2.0
}
{
    "_id" : ObjectId("5a9cecd0ca0d48d805e47b15"),
    "title" : "sql",
    "count" : 3.0
}

and和or一起使用:

名字为linux 或者sql,且count 大于1的值

db.sub.find({$or:[{title:"linux"},{title:"sql"}],count:{$gte:1}})
/* 1 */
{
    "_id" : ObjectId("5a9cecc9ca0d48d805e47b14"),
    "title" : "linux",
    "count" : 2.0
}

/* 2 */
{
    "_id" : ObjectId("5a9cecd0ca0d48d805e47b15"),
    "title" : "sql",
    "count" : 3.0
}

范围运算符

使用"$in""$nin"判断是否在某个范围之内:
查询count在1-2之间的课程

db.sub.find({count:{$in:[1,2,3]}})
/* 1 */
{
    "_id" : ObjectId("5a9cecc9ca0d48d805e47b14"),
    "title" : "linux",
    "count" : 2.0
}
/* 2 */
{
    "_id" : ObjectId("5a9cecd0ca0d48d805e47b15"),
    "title" : "sql",
    "count" : 3.0
}

正则表达式

db.stu.find({name:/^黄/})  //查询姓黄的学生
db.stu.find({name:{$regex:'^陈'}) //查询姓陈的学生

自定义查询

自定义函数

db.sub.find({
    $where:function(){
        return this.count>2
    }
})

/* 1 */
{
    "_id" : ObjectId("5a9cecd0ca0d48d805e47b15"),
    "title" : "sql",
    "count" : 3.0
}
/* 2 */
{
    "_id" : ObjectId("5a9cecd7ca0d48d805e47b16"),
    "title" : "java",
    "count" : 5.0
}
/* 3 */
{
    "_id" : ObjectId("5a9ced2aca0d48d805e47b17"),
    "title" : "c",
    "count" : 6.0
}

Limit

方法limit():用于读取指定数量的文档

语法:

db.集合名词.find().limit(NUMBER)
db.sub.find().limit(2)
/* 1 */
{
    "_id" : ObjectId("5a9cecc9ca0d48d805e47b14"),
    "title" : "linux",
    "count" : 2.0
}

/* 2 */
{
    "_id" : ObjectId("5a9cecd0ca0d48d805e47b15"),
    "title" : "sql",
    "count" : 3.0
}

Skip

方法Skip():用于跳过指定数量的文档

db.stu.find().skip(1)
{
    "_id" : ObjectId("5a9cecd0ca0d48d805e47b15"),
    "title" : "sql",
    "count" : 3.0
}
{
    "_id" : ObjectId("5a9cecd7ca0d48d805e47b16"),
    "title" : "java",
    "count" : 5.0
}
{
    "_id" : ObjectId("5a9ced2aca0d48d805e47b17"),
    "title" : "c",
    "count" : 6.0
}

投影

在查询到的返回结果中,只选择必要的字段,而不是选择一个文档的整个字段

如:一个文档有五个字段,需要显示只有三个,投影其中三个字段即可

语法:

db.集合名称.find({},{字段名称:1,...})

对于需要显示的字段,设置为1,不设置就是不显示,对于id列默认是显示的,如果不显示需要明确设置为0,,

db.sub.find({},{title:1,_id:0})
{
    "title" : "linux"
}
{
    "title" : "sql"
}
{
    "title" : "java"
}
{
    "title" : "c"
}

排序

使用方法sort(),用于对结果集进行排序

语法:

db.集合名词.find().sort({字段:1,..})

参数1为升序排序

参数-1为降序排序

db.sub.find().sort({count:-1})
{
    "_id" : ObjectId("5a9ced2aca0d48d805e47b17"),
    "title" : "c",
    "count" : 6.0
}

{
    "_id" : ObjectId("5a9cecd7ca0d48d805e47b16"),
    "title" : "java",
    "count" : 5.0
}
{
    "_id" : ObjectId("5a9cecd0ca0d48d805e47b15"),
    "title" : "sql",
    "count" : 3.0
}
{
    "_id" : ObjectId("5a9cecc9ca0d48d805e47b14"),
    "title" : "linux",
    "count" : 2.0
}

统计个数

语法:

db.集合名称.find({条件}).count()

也可以:

db.集合名称.count({条件})
db.sub.find().count()
4

消除重复

db.集合名称.distinct({'去重',{条件}})
db.stu.find({},{name:1,gender:1})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值