mongodb快速上手

MongoDB使用手册

MongoDB非关系型数据库。最近火的一塌糊涂,随着越来越多的程序开始使用MongoDB,MongoDB已经成为程序员必不可少的一项技能。

与mysql相比优点如下:

  • 使用动态模式,不需要预先定于结构(字段,类型,主键…)
  • 轻松扩展,无需停机,无需更改应用程序
  • 灵活可以快速构建应用程序
  • 数据以对象的形式存储,更好理解

最近闲来无事,研究了一下一直没时间研究的MongoDB

首先去官网下载MongoDB即可
下载到本地后打开MongoDB>bin>mongodb.exe即可操作

一.MongoDB基本操作

1.show dbs 查看所有数据库
use 数据库名
db看数据库名称
db.dropDatabase()删除指定数据库
db.createCollection(‘users’);创建集合

2.插入数据
语法:db.集合名.insert({json数据})
如db.users.insert({
name:”hansu”,
age:40,
sex:’男’
});

当然也可以设置变量插入
var user1={
name:’zhangsan’,
age:30,
sex:”男”
}
db.users.insert({user1});

多条数据 insertMany()

var student=[
{name:’james’,age:20},{name:’paul’,age:22}
];

db.users.insertMany(student);

3.更新

语法:db.集合名.update({查询条件},{$set:{修改的值}},{upsert:boolean,multi:boolean,writeConcern:});//boolean指true/false
其中有几个参数:
upsert:如果不存在update记录,是够插入objNew,true为插入,默认是false不插入
multi:可选,true为全部替换,false为只替换第一条记录,默认为false
writeConcern:可选,抛出异常级别
如db.users.update({name:’hansu’},{$set:{name:’james’}},{upsert:false,multi:true});//全部替换要查询的值
如db.users.update({name:’hansu’},{$set:{name:’james’}},true,true);//全部替换全部插入

4.删除

语法:db.集合名.remove({删除的数据},{justOne:boolean,writeConcern:})
justOne:如果为true只删除一条,如果为false删除全部,默认为false
如db.users.remove({age:20},1)//删除第一条age为20记录
如db.users.remove({age:20},{justOne:true})//删除第一条age为20记录
如db.users.remove({age:20})//删除全部age为20记录

5.查询

语法:db.表名.find(/查询条件).pretty()
pretty()表示将数据以结构化的方式呈现,增加易读性

查询条件
1)等于 find({属性:属性值})
2)小于$lt find({属性:{$lt:属性值}})
3)小于等于$lte find({属性:{$lte:属性值}})
4)大于$gt find({属性:{$gt:属性值}})
5)大于等于$gte find({属性:{$gte:属性值}})
6)不等于$ne find({属性:{$ne:属性值}})
7)大于某值,小于某值 find({属性:{$gt:属性值,$lt:属性值}})

and查询
find({属性名:属性值,属性名:属性值})
多个条件之间用逗号隔开即可

or查询
find({$or:[{属性名:属性值,属性名:属性值}]})

and与or连用

find({属性名:属性值,$or:[{属性名:属性值}]})

二.mongodb+nodejs

1.nodejs连接数据库

第一种方法
/*
可以用npm方式安装,也可以去网上下载包后拷贝到node_modules

安装模块 mongoose /npm install mongoose –save

1
2
3
4
5
6
7
8
9
var mongoose = require("mongoose");
var url = "mongodb://localhost:27017/local";
var db = mongoose.connect(url);
mongoose.connection.on("error", function() {
console.log("error");
});
mongoose.connection.on("open", function() {
console.log("success");
});

第二种方法
安装mongodb /npm install mongodb –save

1
2
3
4
5
6
const MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/local";
MongoClient.connect(url, (err, db) => {
console.log("连接成功");
db.close();
});

以下都基于mongodb的包进行操作

1.查询数据

1
2
3
4
5
6
7
8
9
10
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, (err, db) => {
var dbo = db.db("local");
dbo.collection("users").find({
"name": "hansu"
}).toArray((err, result) => {
console.log(result);
db.close;
})
});

2.分页查询数据

limit(a) 返回从第一条数据开始的a条数据
limit(a,b) a:起始位置 b:查询数量 返回的是(a+1,a+1+b)之间的数据

1
2
3
4
5
6
7
8
9
10
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, (err, db) => {
var dbo = db.db("local");
dbo.collection("users").find({
"name": "hansu"
}).limit(2).toArray((err, result) => {
console.log(result);
db.close;
})
});

skip(a) 跳过前a条数据,然后读取数据,写在limit()前面

1
2
3
4
5
6
7
8
9
10
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, (err, db) => {
var dbo = db.db("local");
dbo.collection("users").find({
"name": "hansu"
}).skip(2).limit(2).toArray((err, result) => {
console.log(result);
db.close;
})
});

3.更新数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
MongoClient.connect(url, (err, db) => {

var dbo = db.db("local");
dbo.collection("users").update({
name: "hansu"
}, {
$set: {
age: 22
}
}, (err, result) => {
if (err) {
throw err;
}
console.log(result);

});

});

4.删除数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
MongoClient.connect(url, (err, db) => {
if (err) {
throw err;
}
var dbo = db.db("local");
dbo.collection("users").remove({
name: "zhangsan"
}, 1, (err, result) => {
if (err) {
throw err;
}
console.log(result);
})
});

5.插入数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
MongoClient.connect(url, (err, db) => {
var dbo = db.db("local");
var user = {
name: "zhangsan",
age: 20,
sex: "男",
salary: 8000
}
dbo.collection("users").insert(user, (err, result) => {
if (err) {
throw err;
}
console.log(result);
});

});

6.排序

sort({字段:1/-1}) 1代表升序,-1代表降序

1
2
3
4
5
6
7
8
9
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, (err, db) => {
var dbo = db.db("local");
dbo.collection("users").find().sort({
age:1}).toArray((err, result) => {
console.log(result);
db.close;
})
});

有几个注意点:

  1. 单条一般用insertOne(),多条用insertMany()

  2. 因为要将查询数据转化为数组,所以查询时用toArray((err,result)=>{});
    其他的话回调函数就写在方法里,如:insert({},(err,result)=>{});

  3. skip()写在limit()的前面

好啦基本用法都已经在这,后面会陆续更新一些mongodb+nodejs的小demo.