mongodb 查询条件

 

这节来说说mongodb条件操作符,"$lt", "$lte", "$gt", "$gte", "$ne"就是全部的比较操作符,对应于"<", "<=", ">", ">=","!="。

原子操作符:"$and“, "$or“, "$nor“。

or查询有两种方式:一种是用$in来查询一个键的多个值,另一种是用$or来完成多个键值的任意给定值。$in相当于SQL语句的in操作。

$nin不属于。

$not与正则表达式联合使用时候极其有用,用来查询哪些与特定模式不匹配的文档。

$slice相当于数组函数的切片,检索一个数组文档并获取数组的一部分。限制集合中大量元素节省带宽。理论上可以通过 limit() 和 skip() 函数来实现,但是,对于数组就无能为力了。 $slice可以指定两个参数。第一个参数表示要返回的元素总数。第二个参数是可选的。如果使用的话,第一个参数定义的是偏移量,而第二个参数是限定的个数。第二个参数还可以指定一个负数。

$mod取摸操作。

$size操作符允许对结果进行筛选,匹配指定的元素数的数组。

$exists操作符允许返回一个特定的对象。注意:当前版本$exists是无法使用索引的,因此,使用它需要全表扫描。

$type操作符允许基于BSON类型来匹配结果。

1. 插入一些数据

 
1
2
3
4
5
> use ttlsa_com
switched to db ttlsa_com
> db.mediaCollection.insert({ "Type" : "DVD", "Title" : "Matrix, The", "Released" : 1999, "Cast" : ["Keanu Reeves","Carry-Anne Moss","Laurence Fishburne","Hugo Weaving","Gloria Foster","Joe Pantoliano"] })
> db.mediaCollection.insert({ "Type" : "DVD", Title : "Blade Runner", Released : 1982 })
> db.mediaCollection.insert({ "Type" : "DVD", Title : "Toy Story 3", Released : 2010 })

2. $gt (greater than)

 
1
2
3
4
5
6
7
8
9
> db.mediaCollection.find({ Released : {$gt : 2000} }, { "Cast" : 0 }).toArray()
[
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]

3. $gte(greater than or equal to)

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> db.mediaCollection.find( { Released : {$gte : 1999 } }, { "Cast" : 0 } ).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999
        },
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]

4. $lt (less than)

 
1
2
3
4
5
6
7
8
9
> db.mediaCollection.find( { Released : {$lt : 1999 } }, { "Cast" : 0 } ).toArray()
[
        {
                "_id" : ObjectId("5354823fd85b463e729a2e58"),
                "Type" : "DVD",
                "Title" : "Blade Runner",
                "Released" : 1982
        }
]

5. $lte (less than or equal to)

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> db.mediaCollection.find( {Released : {$lte: 1999}}, { "Cast" : 0 } ).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999
        },
        {
                "_id" : ObjectId("5354823fd85b463e729a2e58"),
                "Type" : "DVD",
                "Title" : "Blade Runner",
                "Released" : 1982
        }
]

6. 组合使用

 
1
2
3
4
5
6
7
8
9
> db.mediaCollection.find( {Released : {$gte: 1990, $lt : 2010}}, { "Cast" : 0 } ).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999
        }
]

7. $ne (not equals)

 
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
35
36
37
38
39
40
41
42
43
44
> db.mediaCollection.find( { Type : "DVD"} ).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Keanu Reeves",
                        "Carry-Anne Moss",
                        "Laurence Fishburne",
                        "Hugo Weaving",
                        "Gloria Foster",
                        "Joe Pantoliano"
                ]
        },
        {
                "_id" : ObjectId("5354823fd85b463e729a2e58"),
                "Type" : "DVD",
                "Title" : "Blade Runner",
                "Released" : 1982
        },
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]
> db.mediaCollection.find( { Type : "DVD", Released : { $ne: 1999}} ).toArray()
[
        {
                "_id" : ObjectId("5354823fd85b463e729a2e58"),
                "Type" : "DVD",
                "Title" : "Blade Runner",
                "Released" : 1982
        },
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]

8. $in/$or

 
1
2
3
4
5
6
7
8
9
> db.mediaCollection.find( {Released : {$in : [1999,2008,2009] } }, { "Cast" : 0 } ).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999
        }
]
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
> db.mediaCollection.find( {$or :  [ {Released:1999}, {Released:2008}, {Released:2009} ] } ).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Keanu Reeves",
                        "Carry-Anne Moss",
                        "Laurence Fishburne",
                        "Hugo Weaving",
                        "Gloria Foster",
                        "Joe Pantoliano"
                ]
        }
]

9. $nin

 
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
35
36
> db.mediaCollection.find( {Type : "DVD" }, { "Cast" : 0 }).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999
        },
        {
                "_id" : ObjectId("5354823fd85b463e729a2e58"),
                "Type" : "DVD",
                "Title" : "Blade Runner",
                "Released" : 1982
        },
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]
> db.mediaCollection.find( {Released : {$nin : [1999,2008,2009] },Type : "DVD" }, { "Cast" : 0 }).toArray()
[
        {
                "_id" : ObjectId("5354823fd85b463e729a2e58"),
                "Type" : "DVD",
                "Title" : "Blade Runner",
                "Released" : 1982
        },
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]

10.  $all

与$in有点相似,只不过$all是所有属性要与文档匹配。$in只匹配其一就行。

 
1
2
> db.mediaCollection.find( { Released : {$all : ["2010","2009"] } }, { "Cast" : 0 } ).toArray()
[ ]

11.  多个表达式

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
> db.mediaCollection.find({ $or : [ { "Title" : "Toy Story 3" }, { "ISBN" : "987-1-4302-3051-9" } ] } ).toArray()
[
        {
                "_id" : ObjectId("5353462f93efef02c962da71"),
                "Type" : "Book",
                "Title" : "Definitive Guide to MongoDB, the",
                "ISBN" : "987-1-4302-3051-9",
                "Publisher" : "Apress",
                "Author" : [
                        "Membrey, Peter",
                        "Plugge, Eelco",
                        "Hawkins, Tim"
                ]
        },
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]
 
1
2
3
4
5
6
7
8
9
> db.mediaCollection.find({ "Type" : "DVD", $or : [ { "Title" : "Toy Story 3" }, { "ISBN" : "987-1-4302-3051-9" } ] }).toArray()
[
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]

11. 切片

 
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
> db.mediaCollection.find({"Title" : "Matrix, The"}).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Keanu Reeves",
                        "Carry-Anne Moss",
                        "Laurence Fishburne",
                        "Hugo Weaving",
                        "Gloria Foster",
                        "Joe Pantoliano"
                ]
        }
]
> db.mediaCollection.find({"Title" : "Matrix, The"}, {"Cast" : {$slice: 3}}).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Keanu Reeves",
                        "Carry-Anne Moss",
                        "Laurence Fishburne"
                ]
        }
]
> db.mediaCollection.find({"Title" : "Matrix, The"}, {"Cast" : {$slice: -3}}).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Hugo Weaving",
                        "Gloria Foster",
                        "Joe Pantoliano"
                ]
        }
]
> db.mediaCollection.find({"Title" : "Matrix, The"}, {"Cast" : {$slice: [2,3] }}).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Laurence Fishburne",
                        "Hugo Weaving",
                        "Gloria Foster"
                ]
        }
]
> db.mediaCollection.find({"Title" : "Matrix, The"}, {"Cast" : {$slice: [-5,4] }}).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Carry-Anne Moss",
                        "Laurence Fishburne",
                        "Hugo Weaving",
                        "Gloria Foster"
                ]
        }
]

12. $mod

 
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
> db.mediaCollection.find( { Type : "DVD", Released : { $mod: [2,0] } } ).toArray()
[
        {
                "_id" : ObjectId("5354823fd85b463e729a2e58"),
                "Type" : "DVD",
                "Title" : "Blade Runner",
                "Released" : 1982
        },
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]
 
> db.mediaCollection.find( { Type : "DVD", Released : { $mod: [2,1] } } ).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Keanu Reeves",
                        "Carry-Anne Moss",
                        "Laurence Fishburne",
                        "Hugo Weaving",
                        "Gloria Foster",
                        "Joe Pantoliano"
                ]
        }
]

13. $size

 
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
35
36
37
38
39
40
> db.mediaCollection.find( { Tracklist : {$size : 2} } ).toArray()
[
        {
                "_id" : ObjectId("5353463193efef02c962da73"),
                "Type" : "CD",
                "Artist" : "Nirvana",
                "Title" : "Nevermind",
                "Tracklist" : [
                        {
                                "Track" : "1",
                                "Title" : "Smells like teen spirit",
                                "Length" : "5:02"
                        },
                        {
                                "Track" : "2",
                                "Title" : "In Bloom",
                                "Length" : "4:15"
                        }
                ]
        }
]
> db.mediaCollection.find( { Cast : {$size : 1} } ).toArray()
[ ]
> db.mediaCollection.find( { Cast : {$size : 6} } ).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Keanu Reeves",
                        "Carry-Anne Moss",
                        "Laurence Fishburne",
                        "Hugo Weaving",
                        "Gloria Foster",
                        "Joe Pantoliano"
                ]
        }
]

14. $exists

 
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
> db.mediaCollection.find( { Author : {$exists : true } } ).toArray()
[
        {
                "_id" : ObjectId("5353462f93efef02c962da71"),
                "Type" : "Book",
                "Title" : "Definitive Guide to MongoDB, the",
                "ISBN" : "987-1-4302-3051-9",
                "Publisher" : "Apress",
                "Author" : [
                        "Membrey, Peter",
                        "Plugge, Eelco",
                        "Hawkins, Tim"
                ]
        }
]
> db.mediaCollection.find( { Author : {$exists : false } } ).toArray()
[
        {
                "_id" : ObjectId("5353462f93efef02c962da72"),
                "Type" : "CD",
                "Artist" : "Nirvana",
                "Title" : "Nevermind"
        },
        {
                "_id" : ObjectId("5353463193efef02c962da73"),
                "Type" : "CD",
                "Artist" : "Nirvana",
                "Title" : "Nevermind",
                "Tracklist" : [
                        {
                                "Track" : "1",
                                "Title" : "Smells like teen spirit",
                                "Length" : "5:02"
                        },
                        {
                                "Track" : "2",
                                "Title" : "In Bloom",
                                "Length" : "4:15"
                        }
                ]
        },
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Keanu Reeves",
                        "Carry-Anne Moss",
                        "Laurence Fishburne",
                        "Hugo Weaving",
                        "Gloria Foster",
                        "Joe Pantoliano"
                ]
        },
        {
                "_id" : ObjectId("5354823fd85b463e729a2e58"),
                "Type" : "DVD",
                "Title" : "Blade Runner",
                "Released" : 1982
        },
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]

15. $type

根据BSON类型来检索集合中匹配的结果。

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

类型描述 类型值
Double 1
String 2
Object 3
Array 4
Binary data 5
Object id 7
Boolean 8
Date 9
Null 10
Regular expression 11
JavaScript code 13
Symbol 14
JavaScript code with scope 15
32-bit integer 16
Timestamp 17
64-bit integer 18
Min key 255
Max key 127

下面这个实例是查询嵌入对象。

 

mongodb 查询条件

 

这节来说说mongodb条件操作符,"$lt", "$lte", "$gt", "$gte", "$ne"就是全部的比较操作符,对应于"<", "<=", ">", ">=","!="。

原子操作符:"$and“, "$or“, "$nor“。

or查询有两种方式:一种是用$in来查询一个键的多个值,另一种是用$or来完成多个键值的任意给定值。$in相当于SQL语句的in操作。

$nin不属于。

$not与正则表达式联合使用时候极其有用,用来查询哪些与特定模式不匹配的文档。

$slice相当于数组函数的切片,检索一个数组文档并获取数组的一部分。限制集合中大量元素节省带宽。理论上可以通过 limit() 和 skip() 函数来实现,但是,对于数组就无能为力了。 $slice可以指定两个参数。第一个参数表示要返回的元素总数。第二个参数是可选的。如果使用的话,第一个参数定义的是偏移量,而第二个参数是限定的个数。第二个参数还可以指定一个负数。

$mod取摸操作。

$size操作符允许对结果进行筛选,匹配指定的元素数的数组。

$exists操作符允许返回一个特定的对象。注意:当前版本$exists是无法使用索引的,因此,使用它需要全表扫描。

$type操作符允许基于BSON类型来匹配结果。

1. 插入一些数据

 
1
2
3
4
5
> use ttlsa_com
switched to db ttlsa_com
> db.mediaCollection.insert({ "Type" : "DVD", "Title" : "Matrix, The", "Released" : 1999, "Cast" : ["Keanu Reeves","Carry-Anne Moss","Laurence Fishburne","Hugo Weaving","Gloria Foster","Joe Pantoliano"] })
> db.mediaCollection.insert({ "Type" : "DVD", Title : "Blade Runner", Released : 1982 })
> db.mediaCollection.insert({ "Type" : "DVD", Title : "Toy Story 3", Released : 2010 })

2. $gt (greater than)

 
1
2
3
4
5
6
7
8
9
> db.mediaCollection.find({ Released : {$gt : 2000} }, { "Cast" : 0 }).toArray()
[
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]

3. $gte(greater than or equal to)

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> db.mediaCollection.find( { Released : {$gte : 1999 } }, { "Cast" : 0 } ).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999
        },
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]

4. $lt (less than)

 
1
2
3
4
5
6
7
8
9
> db.mediaCollection.find( { Released : {$lt : 1999 } }, { "Cast" : 0 } ).toArray()
[
        {
                "_id" : ObjectId("5354823fd85b463e729a2e58"),
                "Type" : "DVD",
                "Title" : "Blade Runner",
                "Released" : 1982
        }
]

5. $lte (less than or equal to)

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> db.mediaCollection.find( {Released : {$lte: 1999}}, { "Cast" : 0 } ).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999
        },
        {
                "_id" : ObjectId("5354823fd85b463e729a2e58"),
                "Type" : "DVD",
                "Title" : "Blade Runner",
                "Released" : 1982
        }
]

6. 组合使用

 
1
2
3
4
5
6
7
8
9
> db.mediaCollection.find( {Released : {$gte: 1990, $lt : 2010}}, { "Cast" : 0 } ).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999
        }
]

7. $ne (not equals)

 
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
35
36
37
38
39
40
41
42
43
44
> db.mediaCollection.find( { Type : "DVD"} ).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Keanu Reeves",
                        "Carry-Anne Moss",
                        "Laurence Fishburne",
                        "Hugo Weaving",
                        "Gloria Foster",
                        "Joe Pantoliano"
                ]
        },
        {
                "_id" : ObjectId("5354823fd85b463e729a2e58"),
                "Type" : "DVD",
                "Title" : "Blade Runner",
                "Released" : 1982
        },
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]
> db.mediaCollection.find( { Type : "DVD", Released : { $ne: 1999}} ).toArray()
[
        {
                "_id" : ObjectId("5354823fd85b463e729a2e58"),
                "Type" : "DVD",
                "Title" : "Blade Runner",
                "Released" : 1982
        },
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]

8. $in/$or

 
1
2
3
4
5
6
7
8
9
> db.mediaCollection.find( {Released : {$in : [1999,2008,2009] } }, { "Cast" : 0 } ).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999
        }
]
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
> db.mediaCollection.find( {$or :  [ {Released:1999}, {Released:2008}, {Released:2009} ] } ).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Keanu Reeves",
                        "Carry-Anne Moss",
                        "Laurence Fishburne",
                        "Hugo Weaving",
                        "Gloria Foster",
                        "Joe Pantoliano"
                ]
        }
]

9. $nin

 
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
35
36
> db.mediaCollection.find( {Type : "DVD" }, { "Cast" : 0 }).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999
        },
        {
                "_id" : ObjectId("5354823fd85b463e729a2e58"),
                "Type" : "DVD",
                "Title" : "Blade Runner",
                "Released" : 1982
        },
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]
> db.mediaCollection.find( {Released : {$nin : [1999,2008,2009] },Type : "DVD" }, { "Cast" : 0 }).toArray()
[
        {
                "_id" : ObjectId("5354823fd85b463e729a2e58"),
                "Type" : "DVD",
                "Title" : "Blade Runner",
                "Released" : 1982
        },
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]

10.  $all

与$in有点相似,只不过$all是所有属性要与文档匹配。$in只匹配其一就行。

 
1
2
> db.mediaCollection.find( { Released : {$all : ["2010","2009"] } }, { "Cast" : 0 } ).toArray()
[ ]

11.  多个表达式

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
> db.mediaCollection.find({ $or : [ { "Title" : "Toy Story 3" }, { "ISBN" : "987-1-4302-3051-9" } ] } ).toArray()
[
        {
                "_id" : ObjectId("5353462f93efef02c962da71"),
                "Type" : "Book",
                "Title" : "Definitive Guide to MongoDB, the",
                "ISBN" : "987-1-4302-3051-9",
                "Publisher" : "Apress",
                "Author" : [
                        "Membrey, Peter",
                        "Plugge, Eelco",
                        "Hawkins, Tim"
                ]
        },
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]
 
1
2
3
4
5
6
7
8
9
> db.mediaCollection.find({ "Type" : "DVD", $or : [ { "Title" : "Toy Story 3" }, { "ISBN" : "987-1-4302-3051-9" } ] }).toArray()
[
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]

11. 切片

 
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
> db.mediaCollection.find({"Title" : "Matrix, The"}).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Keanu Reeves",
                        "Carry-Anne Moss",
                        "Laurence Fishburne",
                        "Hugo Weaving",
                        "Gloria Foster",
                        "Joe Pantoliano"
                ]
        }
]
> db.mediaCollection.find({"Title" : "Matrix, The"}, {"Cast" : {$slice: 3}}).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Keanu Reeves",
                        "Carry-Anne Moss",
                        "Laurence Fishburne"
                ]
        }
]
> db.mediaCollection.find({"Title" : "Matrix, The"}, {"Cast" : {$slice: -3}}).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Hugo Weaving",
                        "Gloria Foster",
                        "Joe Pantoliano"
                ]
        }
]
> db.mediaCollection.find({"Title" : "Matrix, The"}, {"Cast" : {$slice: [2,3] }}).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Laurence Fishburne",
                        "Hugo Weaving",
                        "Gloria Foster"
                ]
        }
]
> db.mediaCollection.find({"Title" : "Matrix, The"}, {"Cast" : {$slice: [-5,4] }}).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Carry-Anne Moss",
                        "Laurence Fishburne",
                        "Hugo Weaving",
                        "Gloria Foster"
                ]
        }
]

12. $mod

 
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
> db.mediaCollection.find( { Type : "DVD", Released : { $mod: [2,0] } } ).toArray()
[
        {
                "_id" : ObjectId("5354823fd85b463e729a2e58"),
                "Type" : "DVD",
                "Title" : "Blade Runner",
                "Released" : 1982
        },
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]
 
> db.mediaCollection.find( { Type : "DVD", Released : { $mod: [2,1] } } ).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Keanu Reeves",
                        "Carry-Anne Moss",
                        "Laurence Fishburne",
                        "Hugo Weaving",
                        "Gloria Foster",
                        "Joe Pantoliano"
                ]
        }
]

13. $size

 
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
35
36
37
38
39
40
> db.mediaCollection.find( { Tracklist : {$size : 2} } ).toArray()
[
        {
                "_id" : ObjectId("5353463193efef02c962da73"),
                "Type" : "CD",
                "Artist" : "Nirvana",
                "Title" : "Nevermind",
                "Tracklist" : [
                        {
                                "Track" : "1",
                                "Title" : "Smells like teen spirit",
                                "Length" : "5:02"
                        },
                        {
                                "Track" : "2",
                                "Title" : "In Bloom",
                                "Length" : "4:15"
                        }
                ]
        }
]
> db.mediaCollection.find( { Cast : {$size : 1} } ).toArray()
[ ]
> db.mediaCollection.find( { Cast : {$size : 6} } ).toArray()
[
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Keanu Reeves",
                        "Carry-Anne Moss",
                        "Laurence Fishburne",
                        "Hugo Weaving",
                        "Gloria Foster",
                        "Joe Pantoliano"
                ]
        }
]

14. $exists

 
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
> db.mediaCollection.find( { Author : {$exists : true } } ).toArray()
[
        {
                "_id" : ObjectId("5353462f93efef02c962da71"),
                "Type" : "Book",
                "Title" : "Definitive Guide to MongoDB, the",
                "ISBN" : "987-1-4302-3051-9",
                "Publisher" : "Apress",
                "Author" : [
                        "Membrey, Peter",
                        "Plugge, Eelco",
                        "Hawkins, Tim"
                ]
        }
]
> db.mediaCollection.find( { Author : {$exists : false } } ).toArray()
[
        {
                "_id" : ObjectId("5353462f93efef02c962da72"),
                "Type" : "CD",
                "Artist" : "Nirvana",
                "Title" : "Nevermind"
        },
        {
                "_id" : ObjectId("5353463193efef02c962da73"),
                "Type" : "CD",
                "Artist" : "Nirvana",
                "Title" : "Nevermind",
                "Tracklist" : [
                        {
                                "Track" : "1",
                                "Title" : "Smells like teen spirit",
                                "Length" : "5:02"
                        },
                        {
                                "Track" : "2",
                                "Title" : "In Bloom",
                                "Length" : "4:15"
                        }
                ]
        },
        {
                "_id" : ObjectId("53548225d85b463e729a2e57"),
                "Type" : "DVD",
                "Title" : "Matrix, The",
                "Released" : 1999,
                "Cast" : [
                        "Keanu Reeves",
                        "Carry-Anne Moss",
                        "Laurence Fishburne",
                        "Hugo Weaving",
                        "Gloria Foster",
                        "Joe Pantoliano"
                ]
        },
        {
                "_id" : ObjectId("5354823fd85b463e729a2e58"),
                "Type" : "DVD",
                "Title" : "Blade Runner",
                "Released" : 1982
        },
        {
                "_id" : ObjectId("53548254d85b463e729a2e59"),
                "Type" : "DVD",
                "Title" : "Toy Story 3",
                "Released" : 2010
        }
]

15. $type

根据BSON类型来检索集合中匹配的结果。

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

类型描述 类型值
Double 1
String 2
Object 3
Array 4
Binary data 5
Object id 7
Boolean 8
Date 9
Null 10
Regular expression 11
JavaScript code 13
Symbol 14
JavaScript code with scope 15
32-bit integer 16
Timestamp 17
64-bit integer 18
Min key 255
Max key 127

下面这个实例是查询嵌入对象。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
> db.mediaCollection.find ( { Tracklist: { $type : 3 } } ).toArray()
[
        {
                "_id" : ObjectId("5353463193efef02c962da73"),
                "Type" : "CD",
                "Artist" : "Nirvana",
                "Title" : "Nevermind",
                "Tracklist" : [
                        {
                                "Track" : "1",
                                "Title" : "Smells like teen spirit",
                                "Length" : "5:02"
                        },
                        {
                                "Track" : "2",
                                "Title" : "In Bloom",
                                "Length" : "4:15"
                        }
                ]
        }
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
> db.mediaCollection.find ( { Tracklist: { $type : 3 } } ).toArray()
[
        {
                "_id" : ObjectId("5353463193efef02c962da73"),
                "Type" : "CD",
                "Artist" : "Nirvana",
                "Title" : "Nevermind",
                "Tracklist" : [
                        {
                                "Track" : "1",
                                "Title" : "Smells like teen spirit",
                                "Length" : "5:02"
                        },
                        {
                                "Track" : "2",
                                "Title" : "In Bloom",
                                "Length" : "4:15"
                        }
                ]
        }
]

原文地址:http://www.ttlsa.com/mongodb/mongodb-conditional-operators/

mongodb系列:http://www.ttlsa.com/nosql/mongodb/

[转]mongodb 查询条件:关系运算符"$lt", "$lte", "$gt", "$gte", "$ne" 逻辑运算符"$and“, "$or“, "$nor“的更多相关文章

  1. 深入理解mongodb查询条件语句

    阅读目录 1. 理解:"$lt"."$lte"."$gt" 和 "$gte" 2. 理解 '$ne' 3. 理解 &qu ...

  2. mongodb 查询条件

    这节来说说mongodb条件操作符,"$lt", "$lte", "$gt", "$gte", "$ne&qu ...

  3. MongoDB查询条件常用设置

    原文地址:http://blog.csdn.net/mcpang/article/details/8731065 Java操作mongodb进行查询,常用筛选条件的设置如下: 条件列表: BasicD ...

  4. java 操作mongodb查询条件的常用设置

    java操作mongodb进行查询,常用筛选条件的设置如下: 条件列表:BasicDBList condList = new BasicDBList(); 临时条件对象:BasicDBObject c ...

  5. 65.ORM查询条件:gte,gt,lte和lt的使用

    1. gte: 代表的是大于等于,英文全称为:great than equal.举例:找到文章id大于等于3等文章,示例代码如下: 定义模型的示例代码如下: from django.db import ...

  6. mongodb复杂条件查询 (or与and)

    分类专栏: mongodb   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/tjbsl/ ...

  7. MongoDB查询内嵌数组(限定返回符合条件的数组中的数据)(1)

    https://blog.csdn.net/bicheng4769/article/details/79579830 项目背景 最近在项目中使用mongdb来保存压测结果中的监控数据,那么在获取监控数 ...

  8. 【Mongodb教程 第十九课 】PHP与MONGODB的条件查询

    与普通的关系型数据库类似,在对数据的删.改.查的时候,会用到查询条件,如mysql中的 where… 而MongoDB中,经过php来做的所有的操作指令都是用array来包裹的: MongoColle ...

  9. mongodb多条件分页查询的三种方法(转)

    一.使用limit和skip进行分页查询 public List<User> pageList(int pageNum ,int pageSize){ List<User> u ...

随机推荐

  1. OpenGL完全教程 第一章 初始化OpenGL

    第一章 初始化OpenGL 无论是什么东西,要使用它,就必须对它进行初始化.如果你之前使用过GDI,你应该也多多少少了解到GDI在绘制图形之前要为之创建渲染环境.OpenGL也一样.本章给出的代码,大 ...

  2. jtable更新数据

    static JTable table; public void refrushTableData() { String[] columnNames = { " }; String[][] ...

  3. 使用AJAX做关键字查询:输入框变化自动搜索、无刷新页面;

    使用AJAX做关键字查询要求:1.无刷新页面2.输入框变化自动搜索 <style type="text/css"> .k{ width:150px; height:30 ...

  4. android导入项目出现R文件不能生成

    关于原因网上有好多,比如 1.有时候eclipse不自动编译,把project clean一下,让R.java重新生成   2.选择菜单  Project >> Clean ,前提是勾选上 ...

  5. nrf51822-提高nordic ble数据发送速率

    讲解2点: 为什么 nordic的4.0协议栈中ble只能发送20字节的应用负载数据. 大量数据发送时如何提高发送速率 1:为何上层应用负载每次最多20字节 首先了解 4.0中链路层的包格式如下: P ...

  6. JSON格式解析和libjson使用简介(关于cjson的使用示例)

    JSON格式解析和libjson使用简介 在阅读本文之前,请先阅读下<Rss Reader实例开发之系统设计>一文. Rss Reader实例开发中,进行网络数据交换时主要使用到了两种数据 ...

  7. .net framework环境

    microsoft.com/downloads/details.aspx?FamilyId=262D25E3-F589-4842-8157-034D1E7CF3A3&displaylang=z ...

  8. Chip Factory---hdu5536(异或值最大,01字典树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5536 题意:有一个数组a[], 包含n个数,从n个数中找到三个数使得 (a[i]+a[j])⊕a[k] ...

  9. JQuery: 基本知识了解

    一.介绍:jQuery 是一个 JavaScript函数库.它极大地简化了 JavaScript 编程.jQuery 库可以通过一行简单的标记被添加到网页中.jQuery 是一个轻量级的"写 ...

  10. CentOS 6.8内核版本升级(升级至3.10)(转)

    1.查看当前版本 [root@www.linuxidc.com docker]# cat /etc/issue CentOS release 6.8 (Final) Kernel \r on an \ ...