最近在看jspang的Mongodb视频,于是把自己学到的东西重新自己练习了一遍。
数据格式:
{
name: 'LiJia',
age: 26,
sex: 0,
job: '前端',
skill: {
skillOne: 'HTML+CSS',
skillTwo: 'JavaScript',
skillThree: 'PHP'
},
registerTime: new Date(),
interest: ['玩游戏', '美食', '篮球']
}
// 1. 找到skillOne为 HTML+CSS的,只看name和skillOne
db.workmate.find(
{'skill.skillOne': 'HTML+CSS'},
{name: true, 'skill.skillOne': true, _id: false}
)
// 2. $lt(e):小于(等于), $gt(e):大于(等于), $ne:不等于
// 年龄在18到30岁的
db.workmate.find({age: {$lte: 30, $gte: 18}},
{name: 1, 'skill.skillOne': 1, age: 1, _id: 0})
// 3. 注册时间在2018-1-1之后的
var startDate = new Date('01/01/2018');
db.workmate.find(
{registerTime: {$gt: startDate}},
{name: true, age: true, "skill.skillOne": true, _id: false}
)
// 4. 年龄是25、33或18岁的 $in
db.workmate.find(
{age: {$in: [25, 33, 18]}},
{name: 1, "skill.skillOne": 1, age: 1, _id: 0}
)
// 5. 年龄大于30岁或者skillThree为PHP的 $or
db.workmate.find(
{$or: [{age: {$gte: 30}}, {"skill.skillThree": 'PHP'}]},
{name: 1, "skill.skillThree": 1, age: 1, _id: 0}
)
// 6. 年龄大于30岁且skillThree为PHP的 $and
db.workmate.find(
{$and: [{age: {$gte: 30}}, {"skill.skillThree": 'PHP'}]},
{name: 1, "skill.skillThree": 1, age: 1, _id: 0}
)
// 7. 年龄大于30 或者 小于20 $not
db.workmate.find(
{age: {$not:{$lte: 30, $gte: 20}}},
{name: 1, "skill.skillOne": 1, age: 1, _id: 0}
)
// 8. 兴趣为画画、聚会和看电影的
db.workmate.find(
{interest: ['画画', '聚会', '看电影']},
{name: 1, interest: 1, age: 1, _id: 0}
)
// 9. 兴趣中有看电影兴趣的,没有中括号
db.workmate.find(
{interest: '看电影'},
{name: 1, interest: 1, age: 1, _id: 0}
)
// 10. 同时喜欢看电影和看书的人 $all
db.workmate.find(
{interest: {$all: ['看电影', '看书']}},
{name: 1, interest: 1, age: 1, _id: 0}
)
// 11. 兴趣中有喜欢看电影或看书的人 $in
db.workmate.find(
{interest: {$in: ['看电影', '看书']}},
{name: 1, interest: 1, age: 1, _id: 0}
)
// 12. 有5个兴趣的人 $size
db.workmate.find(
{interest: {$size: 5}},
{name: 1, interest: 1, age: 1, _id: 0}
)
// 13. 只显示前两项 $slice: 2
db.workmate.find(
{},
{name: 1, interest: {$slice: 2}, age: 1, _id: 0}
)
// 14. 只显示最后一项 $slice: -1
db.workmate.find(
{},
{name: 1, interest: {$slice: -1}, age: 1, _id: 0}
)
// 15. 分页,每页显示2条,显示第二页,年龄从小到大
db.workmate.find(
{},
{name: true, age: true, _id: false}
).limit(2).skip(2).sort({age: 1})
// 16. $where 修饰符,可以在查询条件中使用js语句,尽量不使用
db.workmate.find(
{$where: "this.age > 30"},
{name: true, age: true, _id: false}
)