非结构化数据库mongo操作入门

网友投稿 552 2022-05-30

本文主要讲解非结构化数据库mongo的操作,与之相对的是结构化数据库的SQL操作。

首先登录数据库(假设我们已经建好了数据库)

mongo -u user -p password admin show dbs use dbname

到这里,和结构化数据库都很相似,比如MYSQL,但后面的就开始完全不一样了,从数据库之下,就开始不一样。

结构化数据库里的存储对象叫表(table),但非结构化数据库里的存储对象叫集合(collection)。叫惯了的表,要改口叫集合了,会有些不习惯,但为了形成正确的概念,这个习惯要憋过来,叫集合。

非结构化数据库mongo操作入门

标准的SQL语法是结构化数据库的操作语言,SQL中,先不说DDL数据定义语言,先说说DML数据操作语言,

SQL里的DML,以检索数据举例来说,是使用select开头的子句,select ...表示要获取哪些内容,然后接 from ...子句,表示从那个表里检索,再接where ...子句,表示检索条件。也就是说SQL这种语言它自己的结构化的组织也非常好,就是一个固定的框子,往里面填对应的内容就可以了。

但是mongo就不一样了。你得换一种看法,不然哪哪都不顺眼,也不顺手。

换一种什么样的看法会比较顺眼呢?如果你学过编程,那就看做是对象在引用属性或是在调用方法,而且是链式调用。这下就顺眼多了!

举例来说,我们要查看一个集合里的记录(准确的说,在非结构化数据库里叫文档document,不叫记录,这里混用不做区分),dbname.collectionname.findOne()

db里面有集合属性,集合里面有记录,调用集合的findOne()方法,美美的打印一条记录的内容出来

这样是不是好理解多了~

下面我们体验一下基本的操作,包含有建集合、查询/条件查询、条件更新、删除等。

首先是建集合,结构化数据库的建表,那必须定义表的结构。但是非结构化数据库,哈哈哈,那就是随意!

给个表名就可以,以后想往表里放东西,随意,没有任何字段上的结构定义的约束。

> db.createCollection('ic') { "ok" : 1 }

然后我们插入4条记录,准备点数据

> db.ic.insert({'name':'superman','money':0}) WriteResult({ "nInserted" : 1 }) > db.ic.insert({'name':'admin','money':0}) WriteResult({ "nInserted" : 1 }) > db.ic.insert({'name':'u1','money':0}) WriteResult({ "nInserted" : 1 }) > db.ic.insert({'name':'u2','money':0}) WriteResult({ "nInserted" : 1 })

看一下记录,看所有,和看一条(格式化显示)

> db.ic.find() { "_id" : ObjectId("5fec456389372f26d3398cb5"), "name" : "superman", "money" : 0 } { "_id" : ObjectId("5fec457189372f26d3398cb6"), "name" : "admin", "money" : 0 } { "_id" : ObjectId("5fec457789372f26d3398cb7"), "name" : "u1", "money" : 0 } { "_id" : ObjectId("5fec457c89372f26d3398cb8"), "name" : "u2", "money" : 0 } > db.ic.findOne() {     "_id" : ObjectId("5fec456389372f26d3398cb5"),     "name" : "superman",     "money" : 0 }

如果上面的操作你觉得还比较爽的话,下面的就没有那种感觉了

查找一条记录

> db.ic.find({'name':'u1'}) { "_id" : ObjectId("5fec457789372f26d3398cb7"), "name" : "u1", "money" : 0 }

更新,将name为superman和admin的除外,其他人的money都给到10000。你看看吧,这个写法是人写的,人看的吗?看看这个and条件判断,简直不要太难看

> db.ic.update({$and:[{'name':{$ne:'superman'}},{'name':{$ne:'admin'}}]},{$set:{"money":10000}},true,true) WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 }) > db.ic.find() { "_id" : ObjectId("5fec456389372f26d3398cb5"), "name" : "superman", "money" : 0 } { "_id" : ObjectId("5fec457189372f26d3398cb6"), "name" : "admin", "money" : 0 } { "_id" : ObjectId("5fec457789372f26d3398cb7"), "name" : "u1", "money" : 10000 } { "_id" : ObjectId("5fec457c89372f26d3398cb8"), "name" : "u2", "money" : 10000 }

数据库 云数据库 GaussDB(for Mongo)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《云计算与虚拟化技术丛书 Service Mesh实战》—3.4.3 namer
下一篇:[ 转]SRT字幕格式
相关文章