欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【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 })

【Mongodb】入门

支持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})