MongoDB学习笔记 - 查询语句

最近在看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}
)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值