Fork me on GitHub

mongo学习笔记(三)

学习mongoDB查询操作

学习mongoDB的查询(find)操作。

今天照着技术胖的博客继续学习了mongoDB的查询操作。

首先先把例子前提搭好:

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
    var workmate1 = {
name: 'JSPang',
age: 33,
sex: 1,
job: '前端',
skill: {
skillOne: 'HTML+CSS',
skillTwo: 'JavaScript',
skillThree: 'PHP'
},
regeditTime: new Date(),
interest: []
}
var workmate2 = {
name: 'ShengLei',
age: 31,
sex: 1,
job: 'JAVA后端',
skill: {
skillOne: 'HTML+CSS',
skillTwo: 'J2EE',
skillThree: 'PPT'
},
regeditTime: new Date(),
interest: []
}
var workmate3 = {
name: 'MinJie',
age: 18,
sex: 0,
job: 'UI',
skill: {
skillOne: 'PhotoShop',
skillTwo: 'UI',
skillThree: 'PPT'
},
regeditTime: new Date(),
interest: []
}
var workmate4 = {
name: 'XiaoWang',
age: 25,
sex: 1,
job: 'UI',
skill: {
skillOne: 'PhotoShop',
skillTwo: 'UI',
skillThree: 'PPT'
},
regeditTime: new Date(),
interest: []
}
var workmate5 = {
name: 'LiangPeng',
age: 28,
sex: 1,
job: '前端',
skill: {
skillOne: 'HTML+CSS',
skillTwo: 'JavaScript',
},
regeditTime: new Date(),
interest: []
}
var workmate6 = {
name: 'HouFei',
age: 25,
sex: 0,
job: '前端',
skill: {
skillOne: 'HTML+CSS',
skillTwo: 'JavaScript',
},
regeditTime: new Date(),
interest: []
}
var workmate7 = {
name: 'LiuYan',
age: 35,
sex: 0,
job: '美工',
skill: {
skillOne: 'PhotoShop',
skillTwo: 'CAD',
},
regeditTime: new Date(),
interest: []
}
var workmate8 = {
name: 'DingLu',
age: 20,
sex: 0,
job: '美工',
skill: {
skillOne: 'PhotoShop',
skillTwo: 'CAD',
},
regeditTime: new Date(),
interest: []
}
var workmate9 = {
name: 'JiaPeng',
age: 29,
sex: 1,
job: '前端',
skill: {
skillOne: 'HTML+CSS',
skillTwo: 'JavaScript',
skillThree: 'PHP'
},
regeditTime: new Date(),
interest: []
}
var workmate10 = {
name: 'LiJia',
age: 26,
sex: 0,
job: '前端',
skill: {
skillOne: 'HTML+CSS',
skillTwo: 'JavaScript',
skillThree: 'PHP'
},
regeditTime: new Date(),
interest: []
}
var db = connect('company');
var workmateArray = [workmate1, workmate2, workmate3, workmate4, workmate5, workmate6, workmate7, workmate8, workmate9, workmate10];
db.workmate.insert(workmateArray);
print('[SUCCESS]:The data was inserted successfully');

简单查找

1
2
3
4
//简单查找
db.workmate.find();
//根据条件查找
db.workmate.find({ "skill.skillOne": "HTML+CSS" }, { name: true });

不等修饰符

小于($lt):英文全称 less-than

小于等于($lte):英文全称 less-than-equal

大于($gt):英文全称 greater-than

大于等于($gte):英文全称 greater-than-equal

不等于($ne):英文全称 not-equal

可以根据不等修饰符进行查询。

1
2
3
4
5
//查找年龄小于30大于25岁的人
db.workmate.find(
{ age: { $lte: 30, $gte: 25 } },
{ name: true, age: true, "skill.skillOne": true, _id: false }
)

$in修饰符

可以进行一个键多个值的查询。

1
2
3
4
5
//查找年龄为25和33的人
db.workmate.find(
{ age: { $in: [25, 33] } },
{ name: 1, _id: 0 }
)

$or修饰符

同时进行多个键值的查询。或逻辑。

1
2
3
4
5
6
7
8
9
10
//查找年龄大于30或第三项技能为PHP的人
db.workmate.find(
{
$or: [
{ age: { $gte: 30 } },
{ "skill.skillThree": "PHP" }
]
},
{ name: 1, age: 1, "skill.skillThree": 1, _id: 0 }
)

$and修饰符

同时进行多个键值的查询。与逻辑。

1
2
3
4
5
6
7
8
9
10
//查找年龄大于30并且第三项技能为PHP的人
db.workmate.find(
{
$and: [
{ age: { $gte: 30 } },
{ "skill.skillThree": "PHP" }
]
},
{ name: 1, age: 1, "skill.skillThree": 1, _id: 0 }
)

find在js文本中的使用

使用find进行查询也可以像之前使用update操作一样,将语句写在一个js文件中,然后通过load方法执行该js文件即可。

1
2
3
4
5
6
7
var db = connect('company');
var result = db.workmate.find();

while(result.hasNext()) {
printjson(result.next());
}
//打印查询到的所有记录

除了使用while循环,也可以使用forEach,更加方便优雅。

1
2
3
4
5
6
var db = connect('company');
var result = db.workmate.find();

result.forEach(function(res) {
printjson(res);
}