find除了精确查询外,可以匹配更多的条件;

一、比较操作符

$lt代表<;

$lte代表<=;

$gt代表>;

$gte代表>=;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> db.post.
find
()   
"_id" 
: ObjectId(
"54a530c3ff0df3732bac1681"
), 
"id" 
: 2, 
"name" 
"joe"
"age" 
: 30, 
"sex" 
: 1, 
"school" 
"marry" 
}    
"_id" 
: ObjectId(
"54a530c3ff0df3732bac1680"
), 
"id" 
: 1, 
"name" 
"joe"
"age" 
: 30, 
"comments" 
: [ 
"test2"
"test9"
"test5" 
], 
"sex" 
: 1, 
"school" 
"marry" 
}    
"_id" 
: ObjectId(
"54a9700e1b5afd45354fd086"
), 
"id" 
: 3, 
"test3" 
: 3 }    
"_id" 
: ObjectId(
"54a9701c1b5afd45354fd087"
), 
"id" 
: 4, 
"test4" 
: 4 }    
"_id" 
: ObjectId(
"54a970281b5afd45354fd088"
), 
"id" 
: 5, 
"test5" 
: 5 }    
"_id" 
: ObjectId(
"54a970351b5afd45354fd089"
), 
"id" 
: 6, 
"test6" 
: 6 }    
"_id" 
: ObjectId(
"54a970781b5afd45354fd08a"
), 
"id" 
: 7, 
"test7" 
: 7 }    
"_id" 
: ObjectId(
"54a970831b5afd45354fd08b"
), 
"id" 
: 8, 
"test8" 
: 8 }    
"_id" 
: ObjectId(
"54a970901b5afd45354fd08c"
), 
"id" 
: 9, 
"test9" 
: 9 }    
"_id" 
: ObjectId(
"54a9709c1b5afd45354fd08d"
), 
"id" 
: 10, 
"test10" 
: 10 }    
> db.post.
find
({
"id"
:{
"$gte"
:5,
"$lte"
:7}})    
"_id" 
: ObjectId(
"54a970281b5afd45354fd088"
), 
"id" 
: 5, 
"test5" 
: 5 }    
"_id" 
: ObjectId(
"54a970351b5afd45354fd089"
), 
"id" 
: 6, 
"test6" 
: 6 }    
"_id" 
: ObjectId(
"54a970781b5afd45354fd08a"
), 
"id" 
: 7, 
"test7" 
: 7 }    
>

$ne代表不等于:

1
2
3
4
5
6
7
8
9
10
11
> db.post.
find
({
"id"
:{
"$ne"
:8}})   
"_id" 
: ObjectId(
"54a530c3ff0df3732bac1681"
), 
"id" 
: 2, 
"name" 
"joe"
"age" 
: 30, 
"sex" 
: 1, 
"school" 
"marry" 
}    
"_id" 
: ObjectId(
"54a530c3ff0df3732bac1680"
), 
"id" 
: 1, 
"name" 
"joe"
"age" 
: 30, 
"comments" 
: [ 
"test2"
"test9"
"test5" 
], 
"sex" 
: 1, 
"school" 
"marry" 
}    
"_id" 
: ObjectId(
"54a9700e1b5afd45354fd086"
), 
"id" 
: 3, 
"test3" 
: 3 }    
"_id" 
: ObjectId(
"54a9701c1b5afd45354fd087"
), 
"id" 
: 4, 
"test4" 
: 4 }    
"_id" 
: ObjectId(
"54a970281b5afd45354fd088"
), 
"id" 
: 5, 
"test5" 
: 5 }    
"_id" 
: ObjectId(
"54a970351b5afd45354fd089"
), 
"id" 
: 6, 
"test6" 
: 6 }    
"_id" 
: ObjectId(
"54a970781b5afd45354fd08a"
), 
"id" 
: 7, 
"test7" 
: 7 }    
"_id" 
: ObjectId(
"54a970901b5afd45354fd08c"
), 
"id" 
: 9, 
"test9" 
: 9 }    
"_id" 
: ObjectId(
"54a9709c1b5afd45354fd08d"
), 
"id" 
: 10, 
"test10" 
: 10 }    
>

$in可以查询多个键值:

1
2
3
4
5
> db.post.
find
({
"id"
:{
"$in"
:[4,2,8]}})   
"_id" 
: ObjectId(
"54a530c3ff0df3732bac1681"
), 
"id" 
: 2, 
"name" 
"joe"
"age" 
: 30, 
"sex" 
: 1, 
"school" 
"marry" 
}    
"_id" 
: ObjectId(
"54a9701c1b5afd45354fd087"
), 
"id" 
: 4, 
"test4" 
: 4 }    
"_id" 
: ObjectId(
"54a970831b5afd45354fd08b"
), 
"id" 
: 8, 
"test8" 
: 8 }    
>

  

$nin用法:

1
2
3
4
5
6
7
8
9
> db.post.
find
({
"id"
:{
"$nin"
:[4,2,8]}})   
"_id" 
: ObjectId(
"54a530c3ff0df3732bac1680"
), 
"id" 
: 1, 
"name" 
"joe"
"age" 
: 30, 
"comments" 
: [ 
"test2"
"test9"
"test5" 
], 
"sex" 
: 1, 
"school" 
"marry" 
}    
"_id" 
: ObjectId(
"54a9700e1b5afd45354fd086"
), 
"id" 
: 3, 
"test3" 
: 3 }    
"_id" 
: ObjectId(
"54a970281b5afd45354fd088"
), 
"id" 
: 5, 
"test5" 
: 5 }    
"_id" 
: ObjectId(
"54a970351b5afd45354fd089"
), 
"id" 
: 6, 
"test6" 
: 6 }    
"_id" 
: ObjectId(
"54a970781b5afd45354fd08a"
), 
"id" 
: 7, 
"test7" 
: 7 }    
"_id" 
: ObjectId(
"54a970901b5afd45354fd08c"
), 
"id" 
: 9, 
"test9" 
: 9 }    
"_id" 
: ObjectId(
"54a9709c1b5afd45354fd08d"
), 
"id" 
: 10, 
"test10" 
: 10 }    
>

$or的用法:

1
2
3
4
5
> db.post.
find
({
"$or"
:[{
"sex"
:1},{
"id"
:5}]})   
"_id" 
: ObjectId(
"54a530c3ff0df3732bac1681"
), 
"id" 
: 2, 
"name" 
"joe"
"age" 
: 30, 
"sex" 
: 1, 
"school" 
"marry" 
}    
"_id" 
: ObjectId(
"54a530c3ff0df3732bac1680"
), 
"id" 
: 1, 
"name" 
"joe"
"age" 
: 30, 
"comments" 
: [ 
"test2"
"test9"
"test5" 
], 
"sex" 
: 1, 
"school" 
"marry" 
}    
"_id" 
: ObjectId(
"54a970281b5afd45354fd088"
), 
"id" 
: 5, 
"test5" 
: 5 }    
>

    

$mod会将查询的值除以第一个给定的值,若余数匹配第二个值,则匹配成功;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
> db.post.
find
()   
"_id" 
: ObjectId(
"54a530c3ff0df3732bac1681"
), 
"id" 
: 2, 
"name" 
"joe"
"age" 
: 30, 
"sex" 
: 1, 
"school" 
"marry" 
}    
"_id" 
: ObjectId(
"54a530c3ff0df3732bac1680"
), 
"id" 
: 1, 
"name" 
"joe"
"age" 
: 30, 
"comments" 
: [ 
"test2"
"test9"
"test5" 
], 
"sex" 
: 1, 
"school" 
"marry" 
}    
"_id" 
: ObjectId(
"54a9700e1b5afd45354fd086"
), 
"id" 
: 3, 
"test3" 
: 3 }    
"_id" 
: ObjectId(
"54a9701c1b5afd45354fd087"
), 
"id" 
: 4, 
"test4" 
: 4 }    
"_id" 
: ObjectId(
"54a970281b5afd45354fd088"
), 
"id" 
: 5, 
"test5" 
: 5 }    
"_id" 
: ObjectId(
"54a970351b5afd45354fd089"
), 
"id" 
: 6, 
"test6" 
: 6 }    
"_id" 
: ObjectId(
"54a970781b5afd45354fd08a"
), 
"id" 
: 7, 
"test7" 
: 7 }    
"_id" 
: ObjectId(
"54a970831b5afd45354fd08b"
), 
"id" 
: 8, 
"test8" 
: 8 }    
"_id" 
: ObjectId(
"54a970901b5afd45354fd08c"
), 
"id" 
: 9, 
"test9" 
: 9 }    
"_id" 
: ObjectId(
"54a9709c1b5afd45354fd08d"
), 
"id" 
: 10, 
"test10" 
: 10 }    
"_id" 
: ObjectId(
"54aa8a90652d8bdfa0566d34"
), 
"id" 
: 11, 
"test10" 
: 11 }    
> db.post.
find
({
"id"
:{$mod:[5,1]}})    
"_id" 
: ObjectId(
"54a530c3ff0df3732bac1680"
), 
"id" 
: 1, 
"name" 
"joe"
"age" 
: 30, 
"comments" 
: [ 
"test2"
"test9"
"test5" 
], 
"sex" 
: 1, 
"school" 
"marry" 
}    
"_id" 
: ObjectId(
"54a970351b5afd45354fd089"
), 
"id" 
: 6, 
"test6" 
: 6 }    
"_id" 
: ObjectId(
"54aa8a90652d8bdfa0566d34"
), 
"id" 
: 11, 
"test10" 
: 11 }    
>