//进入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});
版权属于:
suaxi
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
评论 (0)