Condition Operator

为了测试,我们首先进行数据准备。

  [plaintext]
1
2
3
4
5
6
7
8
9
10
11
12
13
db.col.find().pretty(); { "_id" : ObjectId("59396dd67ad7ebedf2146587"), "title" : "MongoDB", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "Runoob", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "NoSQL" ], "likes" : 110 }

首先对数据进行清除

  [plaintext]
1
2
> db.col.remove({}); WriteResult({ "nRemoved" : 1 })

插入数据

  [plaintext]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
> db.col.insert({ ... title: 'PHP 教程', ... description: 'PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。', ... by: '菜鸟教程', ... url: 'http://www.runoob.com', ... tags: ['php'], ... likes: 200 ... }); WriteResult({ "nInserted" : 1 }) > db.col.insert({title: 'Java 教程', ... description: 'Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。', ... by: '菜鸟教程', ... url: 'http://www.runoob.com', ... tags: ['java'], ... likes: 150 ... }); WriteResult({ "nInserted" : 1 }) > db.col.insert({title: 'MongoDB 教程', ... description: 'MongoDB 是一个 Nosql 数据库', ... by: '菜鸟教程', ... url: 'http://www.runoob.com', ... tags: ['mongodb'], ... likes: 100 ... }); WriteResult({ "nInserted" : 1 })
  • MongoDB (>) 大于操作符 - $gt

如果你想获取 “col” 集合中 “likes” 大于 100 的数据,你可以使用以下命令:

  [plaintext]
1
db.col.find({"likes" : {$gt : 100}})

类似于SQL语句:

  [sql]
1
Select * from col where likes > 100;
  • MongoDB(>=)大于等于操作符 - $gte

如果你想获取”col”集合中 “likes” 大于等于 100 的数据,你可以使用以下命令:

  [plaintext]
1
db.col.find({likes : {$gte : 100}})

类似于SQL语句:

  [sql]
1
Select * from col where likes >=100;
  • MongoDB (<) 小于操作符 - $lt

如果你想获取”col”集合中 “likes” 小于 150 的数据,你可以使用以下命令:

  [plaintext]
1
db.col.find({likes : {$lt : 150}})

类似于SQL语句:

  [sql]
1
Select * from col where likes < 150;
  • MongoDB (<=) 小于操作符 - $lte

如果你想获取”col”集合中 “likes” 小于等于 150 的数据,你可以使用以下命令:

  [plaintext]
1
db.col.find({likes : {$lte : 150}})

类似于SQL语句:

  [sql]
1
Select * from col where likes <= 150;
  • MongoDB 使用 (<) 和 (>) 查询 - ltgt

如果你想获取”col”集合中 “likes” 大于100,小于 200 的数据,你可以使用以下命令:

  [plaintext]
1
db.col.find({likes : {$lt :200, $gt : 100}})

类似于SQL语句:

  [sql]
1
Select * from col where likes>100 AND likes<200;

$type Operator

在本章节中,我们将继续讨论MongoDB中条件操作符 $type。

$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。

MongoDB 中可以使用的类型如下表所示:

类型 数字 备注
Double 1  
String 2  
Object 3  
Array 4  
Binary data 5  
Undefined 6 已废弃。
Object id 7  
Boolean 8  
Date 9  
Null 10  
Regular Expression 11  
JavaScript 13  
Symbol 14  
JavaScript (with scope) 15  
32-bit integer 16  
Timestamp 17  
64-bit integer 18  
Min key 255 Query with -1.
Max key 127  
  • 实例

如果想获取 “col” 集合中 title 为 String 的数据,你可以使用以下命令:

  [plaintext]
1
db.col.find({"title" : {$type : 2}})

输出结果为:

  [plaintext]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
db.col.find({"title" : {$type : 2}}).pretty(); { "_id" : ObjectId("593abda34599370cf6e7e7fb"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 } { "_id" : ObjectId("593abdb34599370cf6e7e7fc"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 } { "_id" : ObjectId("593abdc64599370cf6e7e7fd"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

Limit() & Skip()

  • MongoDB Limit() 方法

如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。

limit()方法基本语法如下所示:

  [plaintext]
1
> db.COLLECTION_NAME.find().limit(NUMBER)

实例

  [plaintext]
1
2
3
4
5
6
7
> db.col.find({},{"title":1,_id:0}).limit(2); { "title" : "PHP 教程" } { "title" : "Java 教程" } > db.col.find({},{"title":1,_id:0}); { "title" : "PHP 教程" } { "title" : "Java 教程" } { "title" : "MongoDB 教程" }
  • MongoDB Skip() 方法

我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。

skip() 方法脚本语法格式如下:

  [plaintext]
1
> db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

实例

  [plaintext]
1
2
> db.col.find({},{"title":1,_id:0}).limit(1).skip(1); { "title" : "Java 教程" }

注: skip()方法默认参数为 0