Mongodb,分布式文档存储数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo使用C++开发。
MongoDB是一个基于分布式文件存储的数据库。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。
Mongo最大的特点是支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB服务端可运行在Linux、Windows或Mac平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。
热身:
show dbs 显示所有的数据库
exit 退出
db 当前数据库
show tables / show collections 当前数据库有多少张表(集合)
db.c1.insert({name:"user1"}); 插入一条数据
db.c1.save({name:"user1"}); 插入一条数据
两者区别:
如果要插入的_id相同,save可以操作,_id相同则更改,不同则插入。
但是insert会报错:
db.c1.find(); 查询c1表中所有数据
db.c1.find("条件"); 查询符合该条件的所有记录
db.c1.findOne(); 只查询第一条记录
db.c1.findOne("条件"); 只查询符合该条件的第一条记录
进入data目录下查看:
db.c1.remove(); 删除c1集合中所有的数据
db.c1.remove("条件"); 删除c1集合中符合条件的所有的数据
修改数据把user3修改成user30:
若已经插入db.c1.insert({name:"user3",age:30});
{ "_id" : ObjectId("54cc83821e766bd0fad100e2"), "name" : "user3", "age" : 30 }
db.c1.update({name:"user3"},{name:"user30"});
但是修改后的记录是:
{ "_id" : ObjectId("54cc83821e766bd0fad100e2"), "name" : "user30" }
少掉了age:30
若不丢失其他json数据,则这样进行修改即可:
db.c1.update({name:"user3"},{$set:{name:"user300"}}); //和删除一样,第一个参数里面是条件匹配
若要增加json数据,则这样进行修改即可:
db.c1.update({name:"user300"},{$set:{sex:"boy"}});
{ "_id" : ObjectId("54cc83821e766bd0fad100e2"), "age" : 30, "name" : "user300", "sex" : "boy" }
子json插入:
db.c1.insert({name:"user1",post:{title:1,content:"hello"}});
子数组插入:
db.c1.insert({name:"user2",post:[1,2,3,4,5]});
{ "_id" : ObjectId("54cc8efabe9bf76a3494b725"), "name" : "user1", "post" : { "title" : 1, "content" : "hello" } }
{ "_id" : ObjectId("54cc8f98be9bf76a3494b726"), "name" : "user2", "post" : [ 1, 2, 3, 4, 5 ] }
写个循环语句进行插入:
如果只要查询某一条记录的某一列,需要设置find的第二个参数即可,如设置name:1,表示只显示name这一列:
db.c1.find({name:"user11"});
{ "_id" : ObjectId("54cc937428be09ca6a8023ba"), "name" : "user11", "age" : 20, "sex" : "boy" }
db.c1.find({name:"user11"},{name:1});
{ "_id" : ObjectId("54cc937428be09ca6a8023ba"), "name" : "user11" }
db.c1.find({name:"user11"},{name:1,age:1});
{ "_id" : ObjectId("54cc937428be09ca6a8023ba"), "name" : "user11", "age" : 20 }
如果不想带上_id, _id:0.
db.c1.find({name:"user11"},{name:1,age:1,_id:0});
{ "name" : "user11", "age" : 20 }