200行代码快速入门文档型数据库MonogoDB
文章目录
前言
环境:
1.MongoDB V3.24
2.NoSQL Manager for MongoDB(图形化界面)
一、基本命令
1.显示所有数据库
//显示所有数据库
show databases;
show dbs;
2.创建并使用数据库
//创建并使用数据库
use lan;
3.显示当前使用的数据库的所有集合
//显示当前使用的数据库的所有集合
show collections;
4.显示当前使用的数据库名称
//显示当前使用的数据库名称
db
二、文档CRUD
1.增
//增
db.collection.insert({键:值}) 增加一个文档
db.collection.insert([{},{}...]) 增加多个文档
db.collection.insertOne({键:值}) 只能增加一个文档
db.collection.insertMany([{},{}...]) 只能增加多个文档
示例:
db.test.insert({name:"jack",age:18});
db.test.insert([ {name:"lucy",age:16}, {name:"merry",age:17} ]);
db.test.insertOne({name:"tom",age:18});
db.test.insertMany([ {name:"jerry",age:17}, {name:"mike",age:19} ]);
2.查
//查
db.collection.find() 或 db.collection.find({}) 查询所有
db.collection.find(<query>) 条件查询
db.collection.find(<query>)[index] 查询指定索引(默认按照_id顺序升序排序)
db.collection.findOne(<query>) 查询满足条件的第一个文档
示例:
db.test.find({});
db.test.find();
db.test.find({name:"lucy"});
db.test.find()[2];
db.test.findOne();
3.改
//改
db.collection.update({query},{update}) 修改符合查询条件的文档的值。注意:后面的替换属性会完全覆盖前面的属性
db.collection.update( {query}, {$set: {键:值...} } ) 修改符合查询条件的文档(只能修改第一个)
db.collection.update( {query}, {$set: {键:值...}, {multi: true} } ) 修改符合查询条件的的所有文档(multi默认为false,需手动修改)
db.collection.updateOne( {query}, {$set: {键:值...} } ) 修改符合查询条件的文档(等同于multi为false的update)
db.collection.updateMany( {query}, {$set: {键:值...} } ) 修改符合条件的所有文档(等同于multi为true的update)
db.collection.update( {query}, {$unset: {键:值...} } ) 删除符合查询条件的属性
db.collection.replaceOne(<query>,<replacement>) 等同于update(<query>,<update>)
db.collection.update( {query}, {$inc: {key:num} } ) 向文档的数字型键追加值进行数字运算 正数代表增加值,负数代表减少值
db.collection.update( {query}, {$push: {key:value} } ) 向文档的数组型键追加值。
示例:
db.test.update({name:"lucy"},{age:18});
db.test.update(
{"_id" : ObjectId("5eb3745e466ed91adbd93155")},
{$set: {name: "lucy"} }
);
db.test.update(
{age: 18},
{$set: {address: "beijing" } }
);
db.test.update(
{age: 18},
{$set: {address: "beijing"} },
{multi:true}
);
db.test.updateOne(
{age: 19},
{$set: {phone: 110} }
);
db.test.updateMany(
{age: 17},
{$set: {hobby: "game" } }
);
db.test.update(
{age: 17},
{$unset: {hobby: ""} }
);
db.test.updateMany(
{age: 17},
{$unset: {hobby: ""}}
);
db.test.update(
{name: "merry"},
{$inc: {age: -1} }
);
db.test.replaceOne({name: "lucy"},{name: "lucys"});
-------
db.arr.insert([
{type:"color1", color: ["red", "green", "blue"] }
]);
db.arr.update(
{type: "color1" },
{$push: {color: "yellow" } }
);
db.arr.find();
-------
db.test.find();
4.删
//删
db.collection.remove({}) 删除所有
db.collection.remove(<query>,<justone>) 删除符合条件的的文档,Justone为false表示删除多个,为true表示删除一个,默认为false
db.collection.remove
db.collection.deleteOne(<query>) 删除一个符合条件的文档
db.collection.deleteMany(<query>) 删除所有符合条件的文档
db.collection.drop() 删除集合
db.dropDatabase() 删除数据库(谨慎使用)
示例:
db.test.remove({name:"jerry"});
db.test.remove({age: 18},true);
db.test.deleteOne({age: 17});
db.test.deleteMany({age: 18});
db.test.remove({});
db.test.drop();
show collections;
三、批量创建文档
//向集合中插入10000条文档
var arr = [];
for(var i = 1; i <= 10000; i++){
arr.push({num:i});
}
db.numbers.insert(arr);
db.numbers.find().count();
四、常用函数
1.limit和skip
//limit(num) 查询num个文档,默认起始位置为索引第一个
//skip(num) 跳过前面num个文档,和limit()的位置可以互换
db.numbers.find().limit(100);
db.numbers.find().skip(100).limit(100);
2.条件操作符
$gt 大于 $gte 大于等于 $lt 小于 $lte 小于等于
db.collection.find({key: {$gt:num} })
db.collection.find({key: {$gt:num}, {$lt:num} ... }) 与
db.collection.find({$or: [ {key: {$gte:num}}, {key: {$lte:num}} ] }) 或
db.emp.find();
db.emp.find({salary: {$gte:8000} });
db.emp.find({salary: {$lt: 8000} });
db.emp.find({$or: [ {salary: {$gte:8000}}, {salary: {$lte:9000}} ] });
3.排序函数
//sort()排序函数
sort({key:1/-1}) 第二个参数为1表示生序排序,-1表示降序排序
sort({key1:1/-1},{key2:1/-1}) 多重条件排序
//按照薪资升序排序
db.emp.find().sort({salary:1});
//按照薪资升序排序,再按照年龄降序排序
db.emp.find().sort({salary:1},{age:-1});
//db.collection.find().skip().limit().sort(); 复杂查询 其中skip limit sort之间的位置可以相互互换
db.emp.find().skip(1).limit(4).sort({salary:1},{age:-1});
五、多表关系
1.一对一
//一对一的关系:使用内嵌文档的形式
use rs;
db.rs.insert([
{name:"郭靖",wife:{name:"黄蓉"}},
{name:"张无忌",wife:{name:"赵敏"}}
]);
db.rs.find();
2.多对一
//多对一的关系
db.users.insert([{user:"jack"},{user:"tom"}]);
db.users.find();
db.roles.insert({list:["admin","user","guest"],
user_id:ObjectId("5eb263e2c0935786ed43699d")});
var id = db.users.findOne({user:"jack"})._id;
id;
db.roles.find({user_id:id});
3.多对多
//多对多的关系(many to many)
db.customer.insert([
{name:"jack",gift:["car","house"]},
{name:"mike",gift:["car"]},
{name:"lucy",girt:["car","cake"]}
]);
db.orders.insert([
{gift:"car",who:["jack","mike","lucy"]},
{gift:"house",who:["jack","lucy"]},
{gift:"cake",who:"lucy"}
]);
db.customer.find();
db.orders.find();
结语
水平有限,仅供参考,若有纰漏,希望随时指出!