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 }    
>