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

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/

时间: 2024-10-29 19:10:52

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

mongodb 查询条件

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

mongodb查询条件设定

//查询条件 Query query = new Query(); //查询条件 Criteria criteria = new Criteria(); SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); if (StringUtils.isNotEmpty(type) && !type.equals("-1")) { criteria.and("

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

1. gte: 代表的是大于等于,英文全称为:great than equal.举例:找到文章id大于等于3等文章,示例代码如下: 定义模型的示例代码如下: from django.db import models class Category(models.Model): name = models.CharField(max_length=100) class Meta: db_table = 'category' class Article(models.Model): title = m

MongoDB 查询文档随笔

由于之前只是使用 MongoDB 进行存储日志,没有做过分析,只做过通过 api 进行查询操作. 现在有场景需要使用连接工具直接查询分析.所以在此记录一下使用到的查询方法. MongoDB 查询文档使用 find() 方法. find() 方法以非结构化的方式来显示所有文档. 语法 MongoDB 查询数据的语法格式如下: db.collection.find(query, projection) query :可选,使用查询操作符指定查询条件 projection :可选,使用投影操作符指定返

MongoDB官方C#驱动中查询条件Query用法

http://www.cnblogs.com/viprx/archive/2012/09/06/2673693.html MongoDB条件查询的基本语法. Query.All("name", "a", "b");//通过多个元素来匹配数组  Query.And(Query.EQ("name", "a"), Query.EQ("title", "t"));//同时满足

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

与普通的关系型数据库类似,在对数据的删.改.查的时候,会用到查询条件,如mysql中的 where… 而MongoDB中,经过php来做的所有的操作指令都是用array来包裹的: MongoCollection::update  ( array $criteria , array $newobj  [, array $options = array()  ] )public MongoCursor MongoCollection::find  ([ array $query = array() 

MongoDB多条件分页查询,新增,删除操作

概述 日志信息记录到MongoDB中,然后多条件查询 程序界面 MongoDBTools.java package com.admin.utils; import java.lang.reflect.Field; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; import org.apache.log4

MongoDB批量更新不同查询条件的数据

今天遇到这样一个场景:在Java中批量更新MongoDB数据,不过每次更新的条件有不一样,那如何有效地进行更新操作呢? 刚开始的时候,我是想到循环批量更新操作,即每一种查询条件进行一次批量更新过程,这样的思路就是多个查询条件就需要进行多次的批量更新,带来的弊端是跟数据库的连接交互太频繁了,消耗的时间都浪费在这些过程中了:那么今天我们可以通过一种新的思路来避免这种负面影响,即只需要两次连接交互就可以了. ------20200113勉 原文地址:https://www.cnblogs.com/bi

MongoDB【条件查询】 - 比较的条件

阅读前提: 代码的背景是本ID其他的博文: ip库的查询 其格式如下: begin          end               省                   市 18533376,18534399,内蒙古自治区,呼伦贝尔市 简单的代码: public static IpLocation getLocation(long iplong) { IpLocation iplocation = new IpLocation(); // 获取表的句柄 DBCollection coll