【Mongodb】入门
程序员文章站
2022-05-06 17:32:13
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 ......
概述
mongodb 是一个基于分布式文件存储的数据库。由 c++ 语言编写。旨在为 web 应用提供可扩展的高性能数据存储解决方案。
mongodb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的
mongodb以bson结构作为存储和网络存储,bson是一种二进制的json,在json基础上扩展,比json支持更多的类型,如date 和 bindata
bson结构具有以下特性
- 轻量级
- 可遍历
- 高效性
文档(document):mongodb以bson结构存放的一条记录,相当于row
集合(collection):存放文档的集合,相当于table
数据库(database):存放集合和索引及其他信息的集合
配置文件
mongod.cfg
storage: # 数据存放的位置 dbpath: f:\database\mongodb\data journal: # 持久化 enabled: true # engine: # mmapv1: # wiredtiger: # where to write logging data. systemlog: # 日志的记录形式 destination: file # 是否追加 logappend: true # 日志的文件(注意是文件) path: f:\database\mongodb\log\mongod.log # network interfaces net: # 绑定端口 port: 27017 # 绑定ip bindip: 127.0.0.1
启动mongodb
1. 按配置文件启动
mongod -config mongod.cfg
2. 指定参数启动
mongod --dbpath "f:\database\mongodb\data" --logpath "f:\database\mongodb\log\mongod.log"
3. 安装服务
mongod --dbpath "f:\database\mongodb\data" --logpath "f:\database\mongodb\log\mongod.log" --servicename "mongodb" --servicedisplayname "mongodb" --install
连接mongodb
cmd 执行
1. 默认配置
mongo
2. 连接字符串
mongo mongodb://localhost
crud操作
create
1. 插入单个文档
db.logs.insertone()
var data = {"userid" : 10, "operate" : "登录" , "createtime" : new date() }; db.logs.insertone(data);
返回
{ "acknowledged" : true, //是否写入成功 "insertedid" : objectid("5e929706fe1792ce954f65f1") //插入行的id }
2. 插入多个文档
var data = [ {"userid": 10, "operate": "登录", "createtime": new date() }, {"userid": 10, "operate": "点击首页", "createtime": new date() }, {"userid": 10, "operate": "查看列表", "createtime": new date() } ] db.logs.insertmany(data);
返回
{ "acknowledged" : true, "insertedids" : [ objectid("5e9297dbfe1792ce954f65f2"), objectid("5e9297dbfe1792ce954f65f3"), objectid("5e9297dbfe1792ce954f65f4") ] }
3. db.collection.insert
insert可以插入单个文档(对象)/ 多个文档(对象的数组)
var data = [ {"userid": 10, "operate": "登录", "createtime": new date() }, {"userid": 10, "operate": "点击首页", "createtime": new date() }, {"userid": 10, "operate": "查看列表", "createtime": new date() } ] db.logs.insert(data);
返回
单个文档
writeresult({ "ninserted" : 1 })
多个文档
bulkwriteresult({ "writeerrors" : [ ], "writeconcernerrors" : [ ], "ninserted" : 3, "nupserted" : 0, "nmatched" : 0, "nmodified" : 0, "nremoved" : 0, "upserted" : [ ] })
4. 若不存在插入
在日常操作中,经常需要写不存在就写入的操作,在mongodb一种更新机制(upsert),若不存在就写入。
db.logs.update({ "userid": 20 }, { "userid": 20, "operate": "登录", "createtime": new date() }, { upsert: true })
支持upsert参数的方法
- db.collection.update()
- db.collection.updateone()
- db.collection.updatemany()
- db.collection.findandmodify()
- db.collection.findoneandupdate()
- db.collection.findoneandreplace()
read
db.logs.find({"userid":20}); db.logs.findone({"userid":10});
update
1. 更新单个文档
db.logs.updateone({ "_id": objectid("5e92b6d4fe1792ce954f6613") }, { $set: { "createtime": new date() } })
2. 更新多个文档
db.logs.updatemany({ "userid": 10 }, { $set: { "createtime": new date() } })
delete
1. 删除单个文档
db.logs.deleteone({ "userid": 20 })
2. 删除多个文档
db.logs.deletemany({ "userid": 10})
转发请标明出处:https://www.cnblogs.com/wilsonpan/p/12685393.html