非结构化数据库mongo操作入门
本文主要讲解非结构化数据库mongo的操作,与之相对的是结构化数据库的SQL操作。
首先登录数据库(假设我们已经建好了数据库)
mongo -u user -p password admin show dbs use dbname
到这里,和结构化数据库都很相似,比如MYSQL,但后面的就开始完全不一样了,从数据库之下,就开始不一样。
结构化数据库里的存储对象叫表(table),但非结构化数据库里的存储对象叫集合(collection)。叫惯了的表,要改口叫集合了,会有些不习惯,但为了形成正确的概念,这个习惯要憋过来,叫集合。
标准的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 }
- 点赞
- 收藏
- 关注作者
评论(0)