微信公号Node开发「壹」之操作MongoDB(上)
项目中用mongoose操作MongoDB,非关系型数据库MongoDB的结构以及语法与常用的关系型数据库相差很大,这里记录了MongoDB结构以及操作数据库的方法和一些增删改查实例。
结构
关于MongoDB的结构,官方文档给出了下面的参考
SQL | MongoDB |
---|---|
database | database |
table | collection |
row | document or BSON document |
column | field |
index | index |
primary key | primary key(默认自动设置为_id ) |
注:_id
是在插入一条新的document时,系统自动生成的一个由时间、主机名、PID(进程ID)、INC(自增计数器)组合转换而成的24位字符串。
语法
现MongoDB内容如下1
2
3
4
5|-- info //dbs
| |-- users //collection
| |-- logs
|
|-- test
进入MongoDB操作界面,默认进入test数据库。
操作及数据库1
2
3
4
5
6
7
8
9
10//显示所有数据库
show dbs
//显示操作数据库的帮助
db.help()
//进入info数据库,如果没有则创建一个info数据库,所以这也是创建命令
use infos
//显示当前所在的数据库,默认是test数据库
db
//删除当前数据库的所有记录,如果没有选定,默认删除test
db.dropDatabase()
操作集合1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19//显示当前数据库中所有集合
show collections
//创建新集合records
db.records.insert({name:"leeon",time:new Date(),age:12})
db.createCollection("records")
//插入记录
db.records.insert({name:"pine",time:new Date(),age:12})
db.records.save({name:"pine",time:new Date(),age:12})
//删除集合records的所有记录
db.records.remove({})
//更新,name为leeon的记录age更新为20
db.records.update({name:"leeon"},{$set:{age:20}})
//查询所有记录
db.users.find()
常用操作符
$ne
语法:{field: {$ne: value} }1
2//查找users集合中,age!=20的记录
db.users.find({age:{$ne:20}})
$and
语法:{ $and: [{ 1
2//查询users集合下name!=leeon&&age=20的记录
db.users.find({$and:[{name:{$ne:"leeon"}},{age:20}]})
$or
语法:{ $or: [{ 1
2//查询users集合下name!=leeon||age=20的记录
db.users.find({$or:[{name:{$ne:"leeon"}},{age:20}]})
$lt
语法:{field: {$lt: value} }1
2//查询users集合下age<20的记录
db.find({$lt:{age:20}})
$lte
语法:{ field: { $lte: value} }1
2//查询users集合下age<=20的记录
db.find({$lte:{age:20}})
$gt
语法:{field: {$gt: value} }1
2//查询users集合下age>20的记录
db.find({$gt:{age:20}})
$gte1
2//查询users集合下age>=20的记录
db.find({$gte:{age:20}})
注:save和insert的区别主要在于,新记录中指定的_id
在集合中已存在,save会对原纪录进行覆盖,而insert不会操作,如果_id
没有指定,则没有区别,都是进行插入
例子:1
2
3
4
5
6db.users.find()
//{"_id":1,"name":"leeon","age":23}
db.users.insert({"_id":1,name:"li",age:12})
//{"_id":1,"name":"leeon","age":23}
db.users.save({"_id":1,name:"li",age:12})
//{"_id":1,"name":"li","age":12}
作者: leeon
来源: https://leeon.im
链接: https://leeon.im/wechat-node-1th-MongoDB/
本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可