mongoDB

一、常见的NoSQL数据库分类


 二、mongoDB的基本概念


 

2.1 mongodb中的基本的概念是文档,集合,数据库

 当插入第一个文档时,集合就被创建

2.2 MongoDB的数据类型

 三、mongoDB的基本操作


 

3.1.1 mongoDB的shell命令连接

 ./mongod --dbpath=/var/lib/mongo  --bind_ip=10.19.186.213 --port=27017

-dbpath数据库路径
bind_ip绑定的ip地址
port绑定端口
客户端启动命令
[root@host-10-19-186-213 bin]# ./mongo 10.19.186.213:27017
MongoDB shell version v5.0.2
connecting to: mongodb://10.19.186.213:27017/test?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("0d056d3f-432e-4bb5-856d-39514b5a7485") }
MongoDB server version: 5.0.2
================
Warning: the "mongo" shell has been superseded by "mongosh",  

MongDB创建数据库

use DATABASE_NAME
eg:

> use andy
switched to db andy

如果数据库不存在,则创建数据库,否则切换到指定的数据

显示所有数据库

> show dbs
admin     0.000GB
config    0.000GB
local     0.000GB
runoob    0.000GB
security  0.000GB
test      0.000GB

可以看到刚才创建的数据库andy并不存在,查询资料发现,只有在插入数据的情况下才能显示数据库

> db.andy.insert({"name":"andy"})
WriteResult({ "nInserted" : 1 })
> show dbs
admin     0.000GB
andy      0.000GB
config    0.000GB 

删除数据库 

db.dropDatabase()

eg:

> use andy
switched to db andy
> db.dropDatabase()
{ "ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
runoob 0.000GB
security 0.000GB
test 0.000GB

可以看到andy数据库已经被删除了

删除集合  

 db.collection.drop()  

插入文档

文档的数据结构和JSON基本一样。

所有存储在集合中的数据都是BSON格式。

BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。

MongoDB使用insert()或者save()方法向集合汇总插入文档

db.COLLECTION_NAME.insert(document)
COLLECTION_NAME是集合名称,相当于关系型数据库的表概念
不存在则创建,存在则往里面插入一条数据

document也可以是一个参数
db.an.insert({"gender":"male"})
an是集合,在an这个集合中插入一个文档(相当于关系型数据库的行概念)

定义一个变量

> document=({"name":"Sicilia"},{"age":18})
{ "age" : 18 }
> db.an.insert(document)

结果:表名集合中也可以插入一个变量

> db.an.find()
{ "_id" : ObjectId("61306950615fc7d492c425af"), "name" : "Sicilia" }
{ "_id" : ObjectId("61306bbd615fc7d492c425b0"), "age" : 18 }
{ "_id" : ObjectId("61306bff615fc7d492c425b1"), "gender" : "male" }

更新文档

db.collection.update(    
	<query>, 
	<update>, 
	{       
		upsert: <boolean>,   
		multi: <boolean>,  
		writeConcern: <document>
	}
)

参数说明:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。

下面我们就将  "age" : 18 修改为 "age" : 1

> db.an.update({"age":18},{$set:{"age":1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.an.find()
{ "_id" : ObjectId("61306950615fc7d492c425af"), "name" : "Sicilia" }
{ "_id" : ObjectId("61306bbd615fc7d492c425b0"), "age" : 1 }
{ "_id" : ObjectId("61306bff615fc7d492c425b1"), "gender" : "male" } 

 删除文档

db.collection.remove(     
	<query>,     
	{       
		justOne: <boolean>,
		writeConcern: <document> 
	} 
)

参数说明:

  • query :(可选)删除的文档的条件。
  • justOne : (可选)如果设为 true 或 1,则只删除一个文档。
  • writeConcern :(可选)抛出异常的级别。

示例:

只删除第一条匹配的记录

> db.an.remove({"age":1},{justOne:1})
WriteResult({ "nRemoved" : 1 })
> db.an.find()
{ "_id" : ObjectId("61306950615fc7d492c425af"), "name" : "Sicilia" }
{ "_id" : ObjectId("61306bff615fc7d492c425b1"), "gender" : "male" }
> 

删除所有数据

> db.an.remove({}) 
WriteResult({ "nRemoved" : 2 })
> db.an.find()
>  

查询文档

db.COLLECTION_NAME.find() 

find()方法以非结果话的方式来显示所有文档

如果你需要以易读的方式来读取数据,可以使用 pretty() 方法

db.col.find().pretty() 

多个条件查询,逗号隔开,类似于and

  >db.col.find({key1:value1, key2:value2}).pretty() 

OR 条件

db.col.find({$or:[{key1: value1},{key2:value2}]}).pretty()  

操作符  

MongoDB中条件操作符有:

(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte 

例如,找出某字段大于等于100的记录

db.col.find({字段名: {$gte : 100}}) 

Limit与Skip方法

如果想要返回指定数量的数据记录使用limit()方法,括号中可以填写数量

> db.col.find().limit(1).pretty()
{
        "_id" : ObjectId("61307758615fc7d492c425b2"),
        "title" : "PHP 教程",
        "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。",
        "by" : "MongoDB中文网",
        "url" : "http://www.mongodb.org.cn",
        "tags" : [
                "php"
        ],
        "likes" : 200
}
> 

skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。

> db.col.find().skip(1).pretty()
{
        "_id" : ObjectId("613077a2615fc7d492c425b3"),
        "title" : "Java 教程",
        "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。",
        "by" : "菜鸟教程",
        "url" : "http://www.runoob.com",
        "tags" : [
                "java"
        ],
        "likes" : 150
} 

排序方法 

在MongoDB中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。

db.COLLECTION_NAME.find().sort({KEY:1}) 

 索引 exsureIndex

如果没有索引,MongoDB在读取数据时必须扫描集合中的每一个文档,效率很低

索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构

db.COLLECTION_NAME.ensureIndex({KEY:1})  

key为你要创建的索引字段,1为指定按升序创建索引,如果要按降序来创建索引指定为-1

  

  

 

原文地址:https://www.cnblogs.com/anyanpeng/p/15217949.html