json的两种格式:
JSON对象 { }
JSON数组【】
MongoDB的数据模型是面向文档的,所谓文档是一种类似于LSON的结构,简单理解MongoDB这个数据库中存的是各种各样的json(BSON)
三个概念:
数据库(database)
--数据库是一个仓库,在仓库中可以存放集合
集合 (collection)
--集合类似于数组,在集合中可以存放文档
文档 (document)
--文档数据库中的最小单位,我们存储和操作的内容都是文档
MongoDB的版本偶数版是稳定版,奇数版是开发板
MongoDB的安装步骤:
1、安装MongoDB 2、配置环境变量 : 需要将MongoDB的bin目录添加到windows的环境变量之中,3、在c盘根目录创建一个文件夹data/db
4、打开命令窗口,输入mongod来启动MongoDB服务器
mongoDB 的默认端口是27017
5、在打开一个新的窗口输入mongo来启动后客户端
将MongoDB设置为系统服务
1、在c盘根目录创建如下文件夹:
data/db
data/log
2、创建配置文件
在安装文件夹找到bin目录的上一级目录,在该目录中创建mongod.cfg
3、以管理员的身份打开命令行窗口
4、在窗口中执行以下命令:sc.exe create MongoDB binPath= ""D:MongoDBinmongod.exe" --service --config="D:MongoDBmongod.cfg"" DisplayName= "MongoDB" start= "auto"
--在MongoDB中,数据库和集合都不需要创建 ,数据库和集合会在第一次插入文档的时候进行创建
--基本的指令
show dbs --显示所有的数据库
use 数据库名: --进入到指定的数据库中
db --表示当前所在的数据库
show collections --显示当前数据库的所有集合
db.<collection>.insert() --向指定的集合中插入文档
db.<collection>.find() --显示指定集合中的文档
mongodb的基本语法知识点汇总
//进入到my_test数据库 use my_test //2、向数据库的user集合中插入一个文档 db.user.insert({usaename:"zhangsan"}) /* db.users.insert() --向集合中插入一个或者多个文档 db.collection.insertone() --向集合中插入一个文档,该方法中只能传递一个document对象 db.collection.insertMany() --向集合中差诶多个文档,该方法只能接受数组作为参数 */ //插入多个文档 db.user.insert([ {username:"aaa"}, {username:"bbb"}, {username:"ccc"} ]); db.user.find() //3、查询user集合中的文档 db.user.find() --如果不穿对象,查询指定集合中所有符合条件的文档 db.user.find({username:"aaa"}) --返回的是一个数组 db.user.findOne() --查询集合中符合条件的第一个文档,返回的是一个具体的对象 //4、统计数据库user中集合的数量 db.user.count() //5、向数据库user集合中的username为aaa的添加一个address属性,属性值为zhongguo /* db.collection.update() --修改文档,默认情况下会用新的文档替换旧的文档 --如果不需要整个替换文档,则需要使用修改器 $set 用来向文档中添加一个属性 */ db.user.update({username:"aaa"},{username:"aaa",address:"zhongguo"}) db.user.update({username:"bbb"},{$set:{address:"zhongguobeijing"}}) db.user.find() //删除新添加的address属性: 添加一个修改器: $unset db.user.update({username:"aaa"},{$unset:{address:"zhongguo"}}) //向username为zhangsan的文档中,添加一个hobby:{cities:["beijing","shanghai","zhongguo","lanzhou","xinjiang"]} db.user.update({username:"aaa"},{$set:{hibby:{cities:["beijing","shanghai","lanzhou","xian"],movies:["zhizhuxia","dashan","xuezhe"]}}}) db.user.find() /* mongoDB 的文档的属性值也可以是一个文档,如果一个文档的属性还是文档,我们称这个文档叫做内嵌文档 */ /* 要匹配内嵌文档需要。的形式进行查询 */ db.user.find({"hibby.cities":"beijing"}) //向数组中添加一个值 db.user.update({username:"aaa"},{$push: {"hibby.cities":"shanghai"}}) db.user.find() // $addtoset 是用来向数组中添加一个不存在的元素 /* 删除喜欢北京的用户,如果remove中传递一个空的集合作为参数,则会删除所有的文档 db.collection.drop() --删除集合,如果数据库中只有一个集合,会将数据库一起删除 db.dropDatabase() --专门用来删除数据库的 */ db.user.remove({"hibby.cities":"beijing"}) db.user.find() /* 向集合中插入文档时,mongodb数据库会自动为文档添加一个_id属性 属性值会由Mongodb调用odjectID()来自动生成 _id会作为文档的唯一标识 可以自己指定_id属性,如果 手动指定了数据库不会再自动添加 手动指定的id必须去报唯一,不建议自己指定 */ //向number中插入两万条数据 for(var i = 1;i < 20000;i++){ db.numbers.insert({num:i}) } db.numbers.find() //为了提高性能,将数值先放到一个数组中,然后在一次性插入 db.numbers.drop() var arr = []; for(var i = 1;i<=20000;i++){ arr.push({num:i}); } db.numbers.insert(arr); //查询numbers中number大于500的文档、 /* 查询操作符 ¥eq 查询指定的字段是否等于某个值 */ db.numbers.find({num:{$eq:10}}) //查询大于指定值得数据 $gt //查询大于等于某个值得字段: $gte db.numbers.find({num:{$gte:5000}}) //查询小于某个值得字段 db.numbers.find({num:{$lt:30}}) //查询numbers中num大于40小于50的文档 db.numbers.find({num:{$gt:40,$lt:50}}) //查询大于19000或者小于40的 db.numbers.find({$or: [{num:{$gt:19000}},{num:{$lt:40}}]}) //查询集合中前十条 数据 limit用来限制显示数据的最大的条数 db.numbers.find({}).limit(10) //查询一个集合中前10到20条数据 skip用于跳过指定数量的数据 db.numbers.find({}).limit(10).skip(10) //在mongodb中通过limit()和skip()两个函数实现分页
用java API 操作mongodb数据库:
package com.wcg.mongodb; import java.nio.file.DirectoryStream.Filter; import org.bson.Document; import org.junit.Test; import com.google.gson.Gson; import com.mongodb.MongoClient; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; public class TestMongodb { @Test public void test01() { //连接数据库服务器 //连接到指定的mongodb数据库,如果不设置host和port,则自动连接到local MongoClient client = new MongoClient(); //连接到指定的数据库 MongoDatabase testDB = client.getDatabase("test"); //操作数据库中的集合,获取指定集合中的对象 MongoCollection<Document> usercall = testDB.getCollection("user"); //创建一个文档 Document doc = new Document("name","lsio"); //向user集合中插入一个文档 usercall.insertOne(doc); } @Test //将java的一个对象存储到数据库中 public void test02() { //连接数据库服务器 MongoClient client = new MongoClient(); //连接到指定的数据库 MongoDatabase testDB = client.getDatabase("test"); //操作数据库中的集合,获取指定集合中的对象 MongoCollection<Document> stucoll = testDB.getCollection("students"); //创建一个student对象 Student student = new Student("武松",19,"梁山"); //将stu装换成一个json对象 Gson gson = new Gson(); String stuJson = gson.toJson(student); //将json转换为document Document doc = Document.parse(stuJson); //将student对象插入到数据库中 stucoll.insertOne(doc); } @Test //查询MongoDB数据库中的数据 public void test03() { MongoClient client = new MongoClient(); MongoDatabase testDB = client.getDatabase("test"); MongoCollection<Document> stucoll = testDB.getCollection("students"); //查询数据库中的文档 Document doc = (Document) stucoll.find().first(); //将document转换为json Gson gson = new Gson(); String dicjson = doc.toJson(); Student stu = gson.fromJson(doc.toJson(), Student.class); System.out.println(stu.getGender()); } //查询多条数据 @Test public void test04() { MongoClient client = new MongoClient(); MongoDatabase testDB = client.getDatabase("test"); MongoCollection<Document> stucoll = testDB.getCollection("students"); //查询集合中的所有文档 FindIterable<Document> docs = stucoll.find(); for(Document doc: docs) { System.out.println(doc.toJson()); } } //有条件的查询 @Test public void test05() { MongoClient client = new MongoClient(); MongoDatabase testDB = client.getDatabase("test"); MongoCollection<Document> stucoll = testDB.getCollection("students"); //查询集合中的所有文档 FindIterable<Document> docs = stucoll.find(Filters.eq("gender","梁山")); for(Document doc: docs) { System.out.println(doc.toJson()); } } //删除数据 //有条件的查询 @Test public void test06() { MongoClient client = new MongoClient(); MongoDatabase testDB = client.getDatabase("test"); MongoCollection<Document> stucoll = testDB.getCollection("students"); //删除需要的文档 stucoll.deleteOne(Filters.eq("gender","女儿国")); } //跟新数据 @Test public void test07() { MongoClient client = new MongoClient(); MongoDatabase testDB = client.getDatabase("test"); MongoCollection<Document> stucoll = testDB.getCollection("students"); //删除需要的文档 stucoll.updateOne(Filters.eq("gender","梁山"),new Document("$set",new Document("gender","开封"))); } }