MongoDB 笔记

suaxi
2023-06-25 / 0 评论 / 180 阅读 / 正在检测是否收录...
//进入test数据库
use test;

//向user集合插入一个文档
db.user.insert({
    username: '孙笑川'
});

//查询user集合中的文档
db.user.find();

//再插入一个
db.user.insert({
    username: '药水哥'
});

//统计user集合中文档的数量
db.user.find().count();

//按条件查询
db.user.find({username: '孙笑川'});

//向user集合中username为孙笑川的文档添加一个age属性,值为33
db.user.update({username: '孙笑川'}, {$set: {age: 33}});

//使用{username: 'Giao哥'}替换username为药水哥的文档
db.user.replaceOne({username: '药水哥'}, {username: 'Giao哥'});

//删除username为孙笑川的文档的age属性
db.user.update({username: '孙笑川'}, {$unset: {age: 1}})

//向username为孙笑川的文档添加一个hobby:{cities: ['北京', '上海', '深圳']}
//MongoDB的属性值也可以是一个文档,当一个文档的属性也是一个文档时,称这个文档为内嵌文档
db.user.update({username: '孙笑川'}, {$set: {hobby:{cities: ['北京', '上海', '深圳']}}});

//向username为Giao哥的文档添加一个hobby:{movies: ['007', '碟中谍', '加勒比海盗']}
db.user.update({username: 'Giao哥'}, {$set: {hobby:{movies: ['007', '碟中谍', '加勒比海盗']}}});

//查询喜欢007电影的文档
//MongoDB支持内嵌文档的属性直接查询,此时属性名必须带引号
db.user.find({'hobby.movies':'007'});

//向Giao哥添加一个新的电影
//$push 向集合中添加一个新的元素
//$addToSet 向集合中添加一个新的元素(如果数组中已存在了该元素,则不执行添加)
db.user.update({username: 'Giao哥'}, {$push: {'hobby.movies': '大话西游'}});
db.user.update({username: 'Giao哥'}, {$addToSet: {'hobby.movies': '大话西游'}});

//删除喜欢北京的用户文档
db.user.remove({'hobby.cities': '北京'});

//删除user集合
db.user.remove({});
db.user.drop();
show collections;

//向number集合中插入20000条数据
for(var i = 1; i <= 20000; i++) {
    db.number.insert({num: i});
} //11s
db.number.find().count();
db.number.drop();

var arr = [];
for(var i = 1; i <= 20000; i++) {
    arr.push({num: i});
}
db.number.insert(arr); //0.857s
db.number.find().count();

//查找num为500的文档
db.number.find({num: 500});

//查找num大于500的文档 大于 $gt 大于等于 $gte 小于 $lt 小于等于 $lte 不等于 $ne
db.number.find({num: {$gt: 500}});

//查找num大于40小于50的文档
db.number.find({num: {$gt: 40, $lt: 50}});

//查找number的前10条数据
db.number.find().limit(10);

//查找number的11条到20条数据 skip 跳过指定数量的数据
//skip((pageNum - 1) * 10).limit(pageSize)
db.number.find().skip(10).limit(10);

//MongoDB会自定调整limit和skip的位置,无顺序影响
db.number.find().limit(10).skip(10);


//文档间的关系
//一对一
db.couple.insert([
    {
        name: '黄蓉',
        husband: {
            name: '郭靖'
        }
    },
    {
        name: '潘金莲',
        husband: {
            name: '武大郎'
        }
    }
]);

db.couple.find();

//一对多 用户 user 订单order(使用内嵌文档可能会出现数据越来越多难以维护的情况)
db.user.insert([
    {username: '孙笑川'},
    {username: '药水哥'},
    {username: 'Giao哥'}
]);

db.user.find();

db.order.insert([
    {
        list: ['苹果', '西瓜', '梨'],
        user_id: ObjectId("649847f13d750000000045e4")
    },
    {
        list: ['铅笔', '钢笔', '圆珠笔'],
        user_id: ObjectId("649847f13d750000000045e5")
    },
    {
        list: ['羽毛球', '篮球'],
        user_id: ObjectId("649847f13d750000000045e6")
    },
]);

db.order.find();

//查找孙笑川的订单
var user_id = db.user.findOne({username: '孙笑川'})._id;
db.order.find({user_id: user_id});

//多对多 老师 teacher 学生 student
db.teacher.insert([
    {name: '孙笑川'},
    {name: '药水哥'},
    {name: 'Giao哥'}
]);
db.teacher.find();

db.student.insert([
    {
        name: '小明',
        teacher_ids: [
            ObjectId("64984a183d750000000045ea"),
            ObjectId("64984a183d750000000045eb")
        ]
    },
    {
        name: '小华',
        teacher_ids: [
            ObjectId("64984a183d750000000045ea"),
            ObjectId("64984a183d750000000045ec")
        ]
    },
]);

db.student.find();

//查询工资小于1000或大于2500的员工
db.emp.find({$or: [{sal: {$lt: 1000}}, {sal: {$gt: 2500}}]});

//查询财务部的所有员工
var dept_no = db.dept.findOne({dname: '财务部'}).deptno;
db.emp.find({depno: dept_no})

//为工资低于1000的员工加400工资 $inc 在原基础上增加
db.emp.updateMany({sal: {$lte: 1000}}, {$inc: {sal: 400}});

//查询emp并按照_id升序排列
//sort() 按照指定属性排序 1 升序 -1 降序
//先按sal升序,再按empno降序
db.emp.find({}).sort({sal: 1, empno: -1});

//在查询时,可以在第二个参数设置要查询的列(投影)
db.emp.find({}, {ename: 1, _id: 0, sal: 1});
0

评论 (0)

取消