当前位置:网站首页>200行代码快速入门文档型数据库MonogoDB
200行代码快速入门文档型数据库MonogoDB
2022-07-27 16:25:00 【热爱旅行的小李同学】
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();

结语

水平有限,仅供参考,若有纰漏,希望随时指出!
边栏推荐
猜你喜欢

Led learning eye protection table lamp touch chip-dlt8t10s-jericho

The understanding of string in C.

如何用自动化测试搞垮团队

Docker - docker installation, MySQL installation on docker, and project deployment on docker

web UI 自动化测试:Selenium 语法详解 史上最全

IDEA连接数据库时区问题,报红Server returns invalid timezone. Need to set ‘serverTimezone‘ property.

Ruiji takeout notes

大冤种们,新进测试行业,如何正确选择意向企业?

Self control principle learning notes - system stability analysis (2) - loop analysis and Nyquist bode criterion

Unity显示Kinect捕获的镜头
随机推荐
JDBC MySQL 01 JDBC operation MySQL (add, delete, modify and query)
C#与Mysql数据库交互-Mysql配置及增删查改操作
Typescript installation
Unity learning notes (realize the conveyor belt)
Extension of regular expression
Introduction to assembly language (1)
Some advice for NS2 beginner.
「测试新手百科」5 分钟快速上手Pytest 自动化测试框架
IDEA连接数据库时区问题,报红Server returns invalid timezone. Need to set ‘serverTimezone‘ property.
Resource for NS2 beginner
大冤种们,新进测试行业,如何正确选择意向企业?
v-if,v-else,v-for
电磁场学习笔记-矢量分析和场论基础
ES6数值的扩展
Usage of ref keyword
Kinect for Unity3d----KinectManager
During the interface test, connect to the database and back up, restore and verify the data source
换行问题双保险
Extension of ES6 value
贪心法,拟阵和亚模函数(refer)