MongoDB快速入门笔记(四)之MongoDB查询文档操作实例代码

前端技术 2023/09/07 MongoDB

MongoDB简介

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

下面给大家介绍MongoDB查询文档操作的实例

先把student删除,再重新插入数据

> db.student.drop()
true
> db.student.insert([{ \"_id\" : 1, \"name\" : \"zhangsan\", \"age\": 27, \"sex\": 1 }, { \"_id\" : 2, \"name\" : \"lisi\", \"age\": 27 } ,{ \"_id\" : 3, \"name\" : \"wangwu\", \"age\": 30 }, { \"_id\" : 4, \"name\" : \"zhaoliu\", \"age\": 28 }, { \"_id\" : 5, \"name\" : \"qianliu\", \"age\": 33 }, { \"_id\" : 6, \"name\" : \"sunba\", \"age\": 32 }])
BulkWriteResult({
\"writeErrors\" : [ ],
\"writeConcernErrors\" : [ ],
\"nInserted\" : 6,
\"nUpserted\" : 0,
\"nMatched\" : 0,
\"nModified\" : 0,
\"nRemoved\" : 0,
\"upserted\" : [ ]
})
> db.student.find()
{ \"_id\" : 1, \"name\" : \"zhangsan\", \"age\" : 27 }
{ \"_id\" : 2, \"name\" : \"lisi\", \"age\" : 27 }
{ \"_id\" : 3, \"name\" : \"wangwu\", \"age\" : 30 }
{ \"_id\" : 4, \"name\" : \"zhaoliu\", \"age\" : 28 }
{ \"_id\" : 5, \"name\" : \"qianliu\", \"age\" : 33 }
{ \"_id\" : 6, \"name\" : \"sunba\", \"age\" : 32 } 

1、查询指定键

db.集合名称.find({查询条件},{指定键})

指定键:1表示显示,0表示不显示,_id默认显示

> db.student.find({},{name:1})
{ \"_id\" : 1, \"name\" : \"zhangsan\" }
{ \"_id\" : 2, \"name\" : \"lisi\" }
{ \"_id\" : 3, \"name\" : \"wangwu\" }
{ \"_id\" : 4, \"name\" : \"zhaoliu\" }
{ \"_id\" : 5, \"name\" : \"qianliu\" }
{ \"_id\" : 6, \"name\" : \"sunba\" }
> db.student.find({},{_id:0, age:0})
{ \"name\" : \"zhangsan\", \"sex\" : 1 }
{ \"name\" : \"lisi\" }
{ \"name\" : \"wangwu\" }
{ \"name\" : \"zhaoliu\" }
{ \"name\" : \"qianliu\" }
{ \"name\" : \"sunba\" }
> db.student.find({},{_id:0, name:1})
{ \"name\" : \"zhangsan\" }
{ \"name\" : \"lisi\" }
{ \"name\" : \"wangwu\" }
{ \"name\" : \"zhaoliu\" }
{ \"name\" : \"qianliu\" }
{ \"name\" : \"sunba\" } 

2、各种查询方式

$lt:<
$lte:<=
$gt:>
$gte:>=
$ne:!=
> db.student.find({age:{$lt:30}})
{ \"_id\" : 1, \"name\" : \"zhangsan\", \"age\" : 27, \"sex\" : 1 }
{ \"_id\" : 2, \"name\" : \"lisi\", \"age\" : 27 }
{ \"_id\" : 4, \"name\" : \"zhaoliu\", \"age\" : 28 }
> db.student.find({age:{$ne:27}})
{ \"_id\" : 3, \"name\" : \"wangwu\", \"age\" : 30 }
{ \"_id\" : 4, \"name\" : \"zhaoliu\", \"age\" : 28 }
{ \"_id\" : 5, \"name\" : \"qianliu\", \"age\" : 33 }
{ \"_id\" : 6, \"name\" : \"sunba\", \"age\" : 32 } 

$in:包含

$nin:不包含

> db.student.find({age:{$in:[27,28]}})
{ \"_id\" : 1, \"name\" : \"zhangsan\", \"age\" : 27, \"sex\" : 1 }
{ \"_id\" : 2, \"name\" : \"lisi\", \"age\" : 27 }
{ \"_id\" : 4, \"name\" : \"zhaoliu\", \"age\" : 28 }
> db.student.find({age:{$nin:[27,28]}})
{ \"_id\" : 3, \"name\" : \"wangwu\", \"age\" : 30 }
{ \"_id\" : 5, \"name\" : \"qianliu\", \"age\" : 33 }
{ \"_id\" : 6, \"name\" : \"sunba\", \"age\" : 32 } 

$or:或者

> db.student.find({$or:[{age:{$lt:29}}, {name:\"sunba\"}]})
{ \"_id\" : 1, \"name\" : \"zhangsan\", \"age\" : 27, \"sex\" : 1 }
{ \"_id\" : 2, \"name\" : \"lisi\", \"age\" : 27 }
{ \"_id\" : 4, \"name\" : \"zhaoliu\", \"age\" : 28 }
{ \"_id\" : 6, \"name\" : \"sunba\", \"age\" : 32 } 

null:空值

> db.student.find({sex: null})
{ \"_id\" : 2, \"name\" : \"lisi\", \"age\" : 27 }
{ \"_id\" : 3, \"name\" : \"wangwu\", \"age\" : 30 }
{ \"_id\" : 4, \"name\" : \"zhaoliu\", \"age\" : 28 }
{ \"_id\" : 5, \"name\" : \"qianliu\", \"age\" : 33 }
{ \"_id\" : 6, \"name\" : \"sunba\", \"age\" : 32 } 

$type:键是某种类型的

double:1
string:2
...

> db.student.insert({_id:7, name:7, age:70})
WriteResult({ \"nInserted\" : 1 })
> db.student.find({name: {$type: 2}})
{ \"_id\" : 1, \"name\" : \"zhangsan\", \"age\" : 27, \"sex\" : 1 }
{ \"_id\" : 2, \"name\" : \"lisi\", \"age\" : 27 }
{ \"_id\" : 3, \"name\" : \"wangwu\", \"age\" : 30 }
{ \"_id\" : 4, \"name\" : \"zhaoliu\", \"age\" : 28 }
{ \"_id\" : 5, \"name\" : \"qianliu\", \"age\" : 33 }
{ \"_id\" : 6, \"name\" : \"sunba\", \"age\" : 32 }
> db.student.find({name: {$type: 1}})
{ \"_id\" : 7, \"name\" : 7, \"age\" : 70 } 

正则表达式

> db.student.find({name: /si\\b/})
{ \"_id\" : 2, \"name\" : \"lisi\", \"age\" : 27 } 

db.集合名称.findOne({查询条件},{指定键})
查询出符合条件的第一条数据

> db.student.findOne()
{ \"_id\" : 1, \"name\" : \"zhangsan\", \"age\" : 27, \"sex\" : 1 } 

db.集合名称.find({查询条件},{指定键}).limit(数字)
查询前几条数据

> db.student.find().limit(3)
{ \"_id\" : 1, \"name\" : \"zhangsan\", \"age\" : 27, \"sex\" : 1 }
{ \"_id\" : 2, \"name\" : \"lisi\", \"age\" : 27 }
{ \"_id\" : 3, \"name\" : \"wangwu\", \"age\" : 30 } 

db.集合名称.find({查询条件},{指定键}).skip(数字)
跳过前几条数据

> db.student.find().skip(2)
{ \"_id\" : 3, \"name\" : \"wangwu\", \"age\" : 30 }
{ \"_id\" : 4, \"name\" : \"zhaoliu\", \"age\" : 28 }
{ \"_id\" : 5, \"name\" : \"qianliu\", \"age\" : 33 }
{ \"_id\" : 6, \"name\" : \"sunba\", \"age\" : 32 }
{ \"_id\" : 7, \"name\" : 7, \"age\" : 70 } 

可以使用limit()和skip()实现分页

> db.student.find().skip(0).limit(3)
{ \"_id\" : 1, \"name\" : \"zhangsan\", \"age\" : 27, \"sex\" : 1 }
{ \"_id\" : 2, \"name\" : \"lisi\", \"age\" : 27 }
{ \"_id\" : 3, \"name\" : \"wangwu\", \"age\" : 30 }
> db.student.find().skip(3).limit(3)
{ \"_id\" : 4, \"name\" : \"zhaoliu\", \"age\" : 28 }
{ \"_id\" : 5, \"name\" : \"qianliu\", \"age\" : 33 }
{ \"_id\" : 6, \"name\" : \"sunba\", \"age\" : 32 }
> db.student.find().skip(6).limit(3)
{ \"_id\" : 7, \"name\" : 7, \"age\" : 70 } 

db.集合名称.find().sort({键:数字})
数字为1表示升序,数字为2表示降序

> db.student.find().sort({age:1})
{ \"_id\" : 1, \"name\" : \"zhangsan\", \"age\" : 27, \"sex\" : 1 }
{ \"_id\" : 2, \"name\" : \"lisi\", \"age\" : 27 }
{ \"_id\" : 4, \"name\" : \"zhaoliu\", \"age\" : 28 }
{ \"_id\" : 3, \"name\" : \"wangwu\", \"age\" : 30 }
{ \"_id\" : 6, \"name\" : \"sunba\", \"age\" : 32 }
{ \"_id\" : 5, \"name\" : \"qianliu\", \"age\" : 33 }
{ \"_id\" : 7, \"name\" : 7, \"age\" : 70 }
> db.student.find().sort({age:1, _id:-1})
{ \"_id\" : 2, \"name\" : \"lisi\", \"age\" : 27 }
{ \"_id\" : 1, \"name\" : \"zhangsan\", \"age\" : 27, \"sex\" : 1 }
{ \"_id\" : 4, \"name\" : \"zhaoliu\", \"age\" : 28 }
{ \"_id\" : 3, \"name\" : \"wangwu\", \"age\" : 30 }
{ \"_id\" : 6, \"name\" : \"sunba\", \"age\" : 32 }
{ \"_id\" : 5, \"name\" : \"qianliu\", \"age\" : 33 }
{ \"_id\" : 7, \"name\" : 7, \"age\" : 70 } 

以上内容是小编给大家介绍的MongoDB快速入门笔记(四)之MongoDB查询文档操作实例代码,希望对大家有所帮助!

本文地址:https://www.stayed.cn/item/18779

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。