Mongodb基础实践(二)

在前面的文章里面主要介绍了MongoDB的文档,集合,数据库等操作和对文档的增、删、改相关知识,接下来会总结一点有关查询的相关知识。

在MySQL中,我们知道数据查询是优化的主要内容,读写分离等技术都是可以用来处理数据库查询优化的,足以见数据库查询是每个系统中很重要的一部分,之前介绍了find的简单使用,下面会介绍一些相对比较复杂一点的查询。

一、数据查询

MySQL数据库中主要是用select 结合where子句实现数据的查询,功能特别强大,例如多表联合查询、支持正则表达式等。不在这里做过多的相关介绍。这里主要介绍MongoDB的相关查询,MongoDB中主要用find()实现数据的查询,同时也可以使用一些条件限制。

1.1显示单条数据

在上篇文章中提到了find()的使用,但是每次查询数据,都是查询所有的,显示其中的一部分,可以用it迭代。有时候我们想要查询其中的一条数据,具体操作要根据具体需求实现。

MongoDB 查询数据的语法

db.collection.find(query, projection)

query :可选,使用查询操作符指定查询条件
    projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。可以使用 pretty() 方法以易读的方式来读取数据,,语法格式如下

>db.col.find().pretty()

pretty() 方法以格式化的方式来显示所有文档。

例如:

db.winner.find().pretty()
{ "_id" : ObjectId("592e7d1caaa464fa8a557e95"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1eaaa464fa8a557e96"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1faaa464fa8a557e97"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1faaa464fa8a557e98"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d21aaa464fa8a557e99"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d22aaa464fa8a557e9a"), "winne" : 1955 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec4"), "winne" : 41 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec5"), "winne" : 42 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec6"), "winne" : 43 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec7"), "winne" : 44 }

1、查询某个集合中的所有数据

db.winner.find()
{ "_id" : ObjectId("592e7d1caaa464fa8a557e95"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1eaaa464fa8a557e96"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1faaa464fa8a557e97"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1faaa464fa8a557e98"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d21aaa464fa8a557e99"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d22aaa464fa8a557e9a"), "winne" : 1955 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec4"), "winne" : 41 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec5"), "winne" : 42 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec6"), "winne" : 43 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec7"), "winne" : 44 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec8"), "winne" : 45 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec9"), "winne" : 46 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557eca"), "winne" : 47 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ecb"), "winne" : 48 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ecc"), "winne" : 49 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ecd"), "winne" : 50 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ece"), "winne" : 51 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ecf"), "winne" : 52 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ed0"), "winne" : 53 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ed1"), "winne" : 54 }
Type "it" for more

默认显示20条数据,其他数据可以输入it迭代。

2、显示一条数据

find()是输出所有结果,里面可能有些文档内容相同,但是“_id”肯定是不一样的,这时我们可以使用findOne()方法查询,或者可以使用db.winner.find({winne:1955}).limit(1)。

db.winner.find({winne:1955})
{ "_id" : ObjectId("592e7d1caaa464fa8a557e95"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1eaaa464fa8a557e96"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1faaa464fa8a557e97"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1faaa464fa8a557e98"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d21aaa464fa8a557e99"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d22aaa464fa8a557e9a"), "winne" : 1955 }
假如要查询winner集合中winne=1955的一条数据,而用find()查询出所有的数据,这时就可以使用findOne()
db.winner.findOne({winne:1955})
{ "_id" : ObjectId("592e7d1caaa464fa8a557e95"), "winne" : 1955 }

或者可以使用
db.winner.find({winne:1955}).limit(1)
{ "_id" : ObjectId("592e7d1caaa464fa8a557e95"), "winne" : 1955 }
两者的区别
findOne()有点类似MySQL里面的distinct,会返回查询的第一条结果,如果搜索不到想要的数据就会
返回NULL,
db.winner.findOne({winne:200888})
null
db.winner.find({winne:1955}).limit(1)方法就和MySQL里面的limit是一样的,主要是限制查询结果的条数。

3、查询满足一定条件的数据

在MySQL中查询时,可以结合where以及字段等信息查询数据,而MongoDB中也是可以的,同样可以支持一些条件判断语句。

格式 范例 RDBMS中的类似语句
等于 {<key>:<value>} db.col.find({"winne":"1995"}).pretty() where winne = ‘50‘
小于 {<key>:{$lt:<value>}} db.col.find({"winne":{$lt:50}}).pretty() where winne < 50
小于或等于 {<key>:{$lte:<value>}} db.col.find({"winne":{$lte:50}}).pretty() where winne <= 50
大于 {<key>:{$gt:<value>}} db.col.find({"winne":{$gt:50}}).pretty() where winne > 50
大于或等于 {<key>:{$gte:<value>}} db.col.find({"winne":{$gte:50}}).pretty() where winne >= 50
不等于 {<key>:{$ne:<value>}} db.col.find({"winne":{$ne:50}}).pretty() where winne != 50
$gt -------- greater than   $gte --------- gt equal
$lt -------- less than      $lte --------- lt equal
$ne ----------- not equal

1、查询winner集合中winne<50的相关数据
 db.winner.find({winne:{$lt :50}})
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec4"), "winne" : 41 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec5"), "winne" : 42 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec6"), "winne" : 43 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec7"), "winne" : 44 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec8"), "winne" : 45 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec9"), "winne" : 46 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557eca"), "winne" : 47 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ecb"), "winne" : 48 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ecc"), "winne" : 49 }
{ "_id" : ObjectId("592e7e17aaa464fa8a557f28"), "winne" : 41 }
{ "_id" : ObjectId("592e7e17aaa464fa8a557f29"), "winne" : 42 }
{ "_id" : ObjectId("592e7e17aaa464fa8a557f2a"), "winne" : 43 }
{ "_id" : ObjectId("592e7e17aaa464fa8a557f2b"), "winne" : 44 }
2、查询winner集合中40=<winne<50的相关数据
db.winner.find({winne:{$gte:40,$lt:45}})
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec4"), "winne" : 41 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec5"), "winne" : 42 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec6"), "winne" : 43 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec7"), "winne" : 44 }
{ "_id" : ObjectId("592e7e17aaa464fa8a557f28"), "winne" : 41 }
{ "_id" : ObjectId("592e7e17aaa464fa8a557f29"), "winne" : 42 }
{ "_id" : ObjectId("592e7e17aaa464fa8a557f2a"), "winne" : 43 }
{ "_id" : ObjectId("592e7e17aaa464fa8a557f2b"), "winne" : 44 }
{ "_id" : ObjectId("592e7e18aaa464fa8a557f8c"), "winne" : 41 }
{ "_id" : ObjectId("592e7e18aaa464fa8a557f8d"), "winne" : 42 }
{ "_id" : ObjectId("592e7e18aaa464fa8a557f8e"), "winne" : 43 }
{ "_id" : ObjectId("592e7e18aaa464fa8a557f8f"), "winne" : 44 }

4、MongoDB AND 条件

MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,语法格式如下:

>db.winner.find({key1:value1, key2:value2}).pretty()

#插入测试数据
for(i=0;i<20;i++)db.info2.insert({name:"linux",
object:"SA",
company:"docker",
phone:i})
for(i=0;i<20;i++)db.info2.insert({name:"openstack",
object:"DBA",
company:"could",
phone:i})

#检查测试数据
> db.info2.find()
db.info2.find()
{ "_id" : ObjectId("592f838dd276944818f7edb4"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 0 }
{ "_id" : ObjectId("592f838dd276944818f7edb5"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 1 }
{ "_id" : ObjectId("592f838dd276944818f7edb6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 2 }
{ "_id" : ObjectId("592f838dd276944818f7edb7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 3 }
{ "_id" : ObjectId("592f838dd276944818f7edb8"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 4 }
{ "_id" : ObjectId("592f838dd276944818f7edb9"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 5 }
{ "_id" : ObjectId("592f838dd276944818f7edba"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 6 }
{ "_id" : ObjectId("592f838dd276944818f7edbb"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 7 }
{ "_id" : ObjectId("592f838dd276944818f7edbc"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 8 }
{ "_id" : ObjectId("592f838dd276944818f7edbd"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 9 }
{ "_id" : ObjectId("592f838dd276944818f7edbe"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 10 }
{ "_id" : ObjectId("592f838dd276944818f7edbf"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 11 }
{ "_id" : ObjectId("592f838dd276944818f7edc0"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 12 }
{ "_id" : ObjectId("592f838dd276944818f7edc1"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 13 }
{ "_id" : ObjectId("592f838dd276944818f7edc2"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 14 }
{ "_id" : ObjectId("592f838dd276944818f7edc3"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 15 }
{ "_id" : ObjectId("592f838dd276944818f7edc4"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 16 }
{ "_id" : ObjectId("592f838dd276944818f7edc5"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 17 }
{ "_id" : ObjectId("592f838dd276944818f7edc6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 18 }
{ "_id" : ObjectId("592f838dd276944818f7edc7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 19 }
>db.info2.find().count()  #检查数据的条数
40
#筛选name=linux object=SA phone<5
db.info2.find({name:"linux",object:"SA",phone:{$lt:5}})
 执行
 db.info2.find({name:"linux",object:"SA",phone:{$lt:5}})
{ "_id" : ObjectId("592f838dd276944818f7edb4"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 0 }
{ "_id" : ObjectId("592f838dd276944818f7edb5"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 1 }
{ "_id" : ObjectId("592f838dd276944818f7edb6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 2 }
{ "_id" : ObjectId("592f838dd276944818f7edb7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 3 }
{ "_id" : ObjectId("592f838dd276944818f7edb8"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 4 }
筛选name=linux object=SA   5<phone<=10
db.info2.find({name:"linux",object:"SA",phone:{"$gt":5,"$lte":10}})
db.info2.find({name:"linux",object:"SA",phone:{"$gt":5,"$lte":10}})
{ "_id" : ObjectId("592f838dd276944818f7edba"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 6 }
{ "_id" : ObjectId("592f838dd276944818f7edbb"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 7 }
{ "_id" : ObjectId("592f838dd276944818f7edbc"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 8 }
{ "_id" : ObjectId("592f838dd276944818f7edbd"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 9 }
{ "_id" : ObjectId("592f838dd276944818f7edbe"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 10 }
筛选  5<phone<=10
db.info2.find({phone:{"$gt":5,"$lte":10}})
{ "_id" : ObjectId("592f838dd276944818f7edba"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 6 }
{ "_id" : ObjectId("592f838dd276944818f7edbb"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 7 }
{ "_id" : ObjectId("592f838dd276944818f7edbc"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 8 }
{ "_id" : ObjectId("592f838dd276944818f7edbd"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 9 }
{ "_id" : ObjectId("592f838dd276944818f7edbe"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 10 }
{ "_id" : ObjectId("592f838fd276944818f7edce"), "name" : "openstack", "object" : "DBA", "company" : "could", "phone" : 6 }
{ "_id" : ObjectId("592f838fd276944818f7edcf"), "name" : "openstack", "object" : "DBA", "company" : "could", "phone" : 7 }
{ "_id" : ObjectId("592f838fd276944818f7edd0"), "name" : "openstack", "object" : "DBA", "company" : "could", "phone" : 8 }
{ "_id" : ObjectId("592f838fd276944818f7edd1"), "name" : "openstack", "object" : "DBA", "company" : "could", "phone" : 9 }
{ "_id" : ObjectId("592f838fd276944818f7edd2"), "name" : "openstack", "object" : "DBA", "company" : "could", "phone" : 10 }

5 MongoDB OR 条件
MongoDB 除了有类似MySQL的AND条件语句外,还有OR 条件语句,OR 条件语句使用了关键字 $or,语法格式如下:
>db.collections.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()

#查name=linux 或者object=redis
db.info2.find(
{$or:[{name:"linux"},{object:"redis"}]

}
)
db.info2.find(db.info2.find(
... {$or:[{name:"linux"},{object:"redis"}]{$or:[{name:"linux"},{object:"redis"}]
... 
... }}
... ))
{ "_id" : ObjectId("592f838dd276944818f7edb4"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 0 }
{ "_id" : ObjectId("592f838dd276944818f7edb5"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 1 }
{ "_id" : ObjectId("592f838dd276944818f7edb6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 2 }
{ "_id" : ObjectId("592f838dd276944818f7edb7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 3 }
{ "_id" : ObjectId("592f838dd276944818f7edb8"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 4 }
{ "_id" : ObjectId("592f838dd276944818f7edb9"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 5 }
{ "_id" : ObjectId("592f838dd276944818f7edba"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 6 }
{ "_id" : ObjectId("592f838dd276944818f7edbb"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 7 }
{ "_id" : ObjectId("592f838dd276944818f7edbc"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 8 }
{ "_id" : ObjectId("592f838dd276944818f7edbd"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 9 }
{ "_id" : ObjectId("592f838dd276944818f7edbe"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 10 }
{ "_id" : ObjectId("592f838dd276944818f7edbf"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 11 }
{ "_id" : ObjectId("592f838dd276944818f7edc0"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 12 }
{ "_id" : ObjectId("592f838dd276944818f7edc1"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 13 }
{ "_id" : ObjectId("592f838dd276944818f7edc2"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 14 }
{ "_id" : ObjectId("592f838dd276944818f7edc3"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 15 }
{ "_id" : ObjectId("592f838dd276944818f7edc4"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 16 }
{ "_id" : ObjectId("592f838dd276944818f7edc5"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 17 }
{ "_id" : ObjectId("592f838dd276944818f7edc6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 18 }
{ "_id" : ObjectId("592f838dd276944818f7edc7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 19 }
Type "it" for more
> itit
{ "_id" : ObjectId("592f8964d276944818f7eddc"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 0 }
{ "_id" : ObjectId("592f8964d276944818f7eddd"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 1 }
{ "_id" : ObjectId("592f8964d276944818f7edde"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 2 }
{ "_id" : ObjectId("592f8964d276944818f7eddf"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 3 }
{ "_id" : ObjectId("592f8964d276944818f7ede0"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 4 }
{ "_id" : ObjectId("592f8964d276944818f7ede1"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 5 }
{ "_id" : ObjectId("592f8964d276944818f7ede2"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 6 }
{ "_id" : ObjectId("592f8964d276944818f7ede3"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 7 }
{ "_id" : ObjectId("592f8964d276944818f7ede4"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 8 }
{ "_id" : ObjectId("592f8964d276944818f7ede5"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 9 }

6、AND和OR综合使用

查询phone<5,name=MongoDB或者name=linux

db.info2.find({phone:{$lt:5},$or:[{name:"MongoDB"},{name:"linux"}]})
db.info2.find({phone:{$lt:5},$or:[{name:"MongoDB"},{name:"linux"}]})
{ "_id" : ObjectId("592f838dd276944818f7edb4"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 0 }
{ "_id" : ObjectId("592f838dd276944818f7edb5"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 1 }
{ "_id" : ObjectId("592f838dd276944818f7edb6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 2 }
{ "_id" : ObjectId("592f838dd276944818f7edb7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 3 }
{ "_id" : ObjectId("592f838dd276944818f7edb8"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 4 }
{ "_id" : ObjectId("592f8964d276944818f7eddc"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 0 }
{ "_id" : ObjectId("592f8964d276944818f7eddd"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 1 }
{ "_id" : ObjectId("592f8964d276944818f7edde"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 2 }
{ "_id" : ObjectId("592f8964d276944818f7eddf"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 3 }
{ "_id" : ObjectId("592f8964d276944818f7ede0"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 4 }

7、查询结果排序

在MySQL中是有order by条件,可以根据desc或者asc进行升序或者降序操作,而MongoDB中是可以利用sort()方法实现排序的,例如对6中的结果处理,根据phone排序。

基本语法

db.info2.find().sort({phone:1}) #这里phone表示根据该key排序,1表示升序,-1表示降序

db.info2.find({phone:{$lt:5},$or:[{name:"MongoDB"},{name:"linux"}]}).sort({phone:1})
{ "_id" : ObjectId("592f838dd276944818f7edb4"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 0 }
{ "_id" : ObjectId("592f8964d276944818f7eddc"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 0 }
{ "_id" : ObjectId("592f838dd276944818f7edb5"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 1 }
{ "_id" : ObjectId("592f8964d276944818f7eddd"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 1 }
{ "_id" : ObjectId("592f838dd276944818f7edb6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 2 }
{ "_id" : ObjectId("592f8964d276944818f7edde"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 2 }
{ "_id" : ObjectId("592f838dd276944818f7edb7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 3 }
{ "_id" : ObjectId("592f8964d276944818f7eddf"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 3 }
{ "_id" : ObjectId("592f838dd276944818f7edb8"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 4 }
{ "_id" : ObjectId("592f8964d276944818f7ede0"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 4 }

8、MongoDB Skip() 方法

在前面介绍了limit(),sort(),count()等方法,接下来要介绍一个比较有趣的skip()方法,在使用limit()的时候可以显示你要求的几条,而skip()方法是跳过几条。

db.info2.find({phone:{$lt:5},$or:[{name:"MongoDB"},{name:"linux"}]}).sort({phone:1})
{ "_id" : ObjectId("592f838dd276944818f7edb4"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 0 }
{ "_id" : ObjectId("592f8964d276944818f7eddc"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 0 }
{ "_id" : ObjectId("592f838dd276944818f7edb5"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 1 }
{ "_id" : ObjectId("592f8964d276944818f7eddd"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 1 }
{ "_id" : ObjectId("592f838dd276944818f7edb6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 2 }
{ "_id" : ObjectId("592f8964d276944818f7edde"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 2 }
{ "_id" : ObjectId("592f838dd276944818f7edb7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 3 }
{ "_id" : ObjectId("592f8964d276944818f7eddf"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 3 }
{ "_id" : ObjectId("592f838dd276944818f7edb8"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 4 }
{ "_id" : ObjectId("592f8964d276944818f7ede0"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 4 }
使用skip()方法
db.info2.find({phone:{$lt:5},$or:[{name:"MongoDB"},{name:"linux"}]}).sort({phone:1}).skip(3)
{ "_id" : ObjectId("592f8964d276944818f7eddd"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 1 }
{ "_id" : ObjectId("592f838dd276944818f7edb6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 2 }
{ "_id" : ObjectId("592f8964d276944818f7edde"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 2 }
{ "_id" : ObjectId("592f838dd276944818f7edb7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 3 }
{ "_id" : ObjectId("592f8964d276944818f7eddf"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 3 }
{ "_id" : ObjectId("592f838dd276944818f7edb8"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 4 }
{ "_id" : ObjectId("592f8964d276944818f7ede0"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 4 }
skip 方法有点类似于MySQL里面的limit之间间隔情况。

这里介绍了有关查询的问题,在数据库中,查询是非常重要的一部分,所以介绍的篇幅也是比较多的,后期遇到其他问题也会继续总结输出。

时间: 2024-08-03 15:11:38

Mongodb基础实践(二)的相关文章

20171113曾英特《逆向及Bof基础实践》实验报告

一.实验名称 逆向及Bof基础实践 二.实验目的 1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码 2.掌握反汇编与十六进制编程器 3.能正确修改机器指令改变程序执行流程 4.能正确构造payload进行bof攻击 三.实验内容 本次实验的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同时包含另一个代码片段getShell,会返回一个可用Shell.正常情况下这个代码是不会被运行的

windows下mongodb基础玩法系列二CURD操作(创建、更新、读取和删除)

windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) 简单说几句 在mongodb中3元素:db(数据库).collection(集合).document(文档) 其中collection类似于数据库中的表,document类似于行,这样一来我们就将内容对比起来记忆学习了. 数据格式 MongoDB documents是BSON格式(一种类json的一种二进制形式的存

windows下mongodb基础玩法系列二CURD附加一

windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下mongodb基础玩法系列二CURD附加一 说在前面的话 在系列二中CURD只是简单的走了一下代码操作的流程,其中全是简单基础操作的内容, 在我仔细看完接下来的内容后决定再丰富一下前面的操作,并实战一个简单的demo出来,demo具体搭配语言暂时决定在PHP与nodejs之间. 增加内容至文档没说完

蓝鸥Unity开发基础—— 实践课程源代码二

蓝鸥Unity开发基础-- 实践课程源代码二 using System; namespace MyFirstGame{    class MainClass    {        public static void Main (string[] args)        {            //游戏即将启动时做一些操作            const int mapW=46;//地图宽度            const int mapH = 16;//地图高度 //定义常量    

exp9《网络对抗》web安全基础实践201453331魏澍琛

201453331魏澍琛web安全基础实践 一.实验过程 1.webgoat开启 2.Injection Flaws练习 Command Injection 原网页中没有注入的地方,那就用burpsuite(设置的相关步骤别人的博客写的很详细,不累述了),分析第一个包看他的数据提交的位置,找到后进行命令的注入,成功. 我注入的命令是AccessControlMatrix.help"&&ifconfig",执行了ifconfig命令,鉴于这个可以证明是本人操作,就把他截了

java 基础(二)

java 基础(二)java 基础(二) 2016-2-1 by Damon 61. 编写多线程程序有几种实现方式 Java 5以前实现多线程有两种实现方法:一种是继承Thread类:另一种是实现Runnable接口.两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如果继承了Thread类就无法再继承其他类了,显然使用Runnable接口更为灵活. 补充:Java 5以后创建线程还有第三种方式:实现Callable接口,该接口中的

MongoDB基础知识(一)

互联网行业的发展非常的迅速,数据存储以及架构优化方面也有很多不同的解决方案,例如关系型数据库.非关系型数据库.数据仓库技术等.更多数据库类产品的出现,为我们很好的解决了数据存储的问题,例如Redis缓存,MySQL关系型数据库,MongoDB文档型数据库,Hbase数据仓库等. 随着业务的发展,在对架构优化时,选取了MongoDB存储一部分数据,作为一个运维人员只能迎头赶上,去学习操作和维护相关知识.下面的文档就是自己学习MongoDB数据库的学习笔记,主要有以下特点: 1.理论较少,主要是实际

Linux及安全——Linux基础实践

Linux及安全——Linux基础实践 一.实践一:掌握软件源的维护方法,配置系统使用教育网内的软件源镜像.掌握通过软件源来查找,安装,卸载,更新软件的方法. 1.软件源的维护方法 Ubuntu的软件源列表存放在/etc/apt/sourcers.list,为了安全起见,我们在对源文件进行操作之前,先将软件源备份. 打开终端,输入命令 sudo cp /etc/apt/sources.list/ etc/apt/backup_sources.list 即把软件源备份的文件backup_sourc

Linux及安全实践二

Linux及安全实践二   基本内核模块 20135238 龚睿 1.  理解模块原理 linux模块是一些可以作为独立程序来编译的函数和数据类型的集合.之所以提供模块机制,是因为Linux本身是一个单内核.单内核由于所有内容都集成在一起,效率很高,但可扩展性和可维护性相对较差,模块机制可弥补这一缺陷. Linux模块可以通过静态或动态的方法加载到内核空间,静态加载是指在内核启动过程中加载:动态加载是指在内核运行的过程中随时加载. 一个模块被加载到内核中时,就成为内核代码的一部分.模块加载入系统