MongoDB学习知识点总结(一)

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","开封")));
            }    
    
}
原文地址:https://www.cnblogs.com/wcgstudy/p/11192441.html