mongodb初级应用摘要
mongodb被称为最像关系型数据库的非关系型数据库,之所以这样评价,是因为其数据库结构组成和关系型数据库几乎保持了一一对应的关系。
mongodb vs 一般的关系型数据库
数据库(数据库);
集合(数据表);
文档(数据表中的一条记录);
域(数据记录的一个字段)
如此相似的构成,十分有助于我们学习mongodb。
mongodb 数据类型
ObjectID:文档id String:字符串 Boolean:布尔值 Integer:整数
Double:浮点数 Array:数组(列表) Null:空值 Timestamp:时间戳
Date:日期时间
应用摘要
查看数据库系统中的所有数据库
show dbs
创建数据库
use databasename
注:mongo 中没有创建数据库的命令,上述命令只是用于指向某个数据库,这个数据库可以是存在的或是不存在的。存在则应用,不存在,当在该数据库名下进行实际操作(如创建一个集合)时,该数据库就会真正被创建,若只是简单指向了该数据库而没有进行任何实质性操作,该数据库不会被真正创建。
为了以下示例方便,在此直接进行实质化操作,而非简单的抽象描述。
创建(指向)一个数据库,命名为history:
use history #结果: switched to db history
如果想要删除某个数据库,先指向它,再使用如下命令:
db.dropDatabase()
查看该数据库中的所有集合:
show collections
在该数据库中创建一个集合,命名为person:
db.createCollection('person') # { "ok" : 1 }
删除指定的集合,使用如下命令:
db.person.drop()
查看指定集合中的文档:
db.person.find()
向集合person中插入一个文档(一条数据记录):
db.person.insert({'_id':1,'name':'曹操','gender':'男'}) # WriteResult({ "nInserted" : 1 })
注:文档,就相当于关系型数据库中数据表的一条记录,在mongo中只是形式上有些特殊而已。mongo中文档以类似于字典的格式(或者说类似于前端技术中的json)呈现,本质上和关系型数据库的数据记录相同。
说明:mongo中,每个文档的主键域默认为'_id',插入新的文档时,若不特别指明主键的值,则由数据库系统自动生成一个唯一的随机字符串对象。形如:
{ "_id" : ObjectId("5a94c9bdc4773bc515e4e706"), "name" : "貂蝉", "gender" : "女", "company" : "东汉" }
向已有的文档中添加一个新的域(新的字段):
db.person.update({'_id':1},{$set:{'company':'东汉'}}) # WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
修改某个文档指定域的值
比如,将如下文档中的company的值修改为指定的值
{ "_id" : 3, "name" : "孙权", "gender" : "男", "company" : "东汉" }
使用命令:
db.person.update({'_id':3},{$set:{'company':'孙吴'}})
删除某个指定的文档,比如要删除如下姓名为'貂蝉'的文档
{ "_id" : ObjectId("5a94c9bdc4773bc515e4e706"), "name" : "貂蝉", "gender" : "女", "company" : "东汉" }
使用命令:
db.person.remove({'name':'貂蝉'})
最后,非常关键的一个操作——保存!
使用命令:db.person.save
切记,执行完操作,一定要保存!否则,一旦关闭mongodb服务端,你的所有操作都不会被保存到数据库中,那样就一下回到解放前了。。。