MongoDB数据库操作

Student:

{

“name”: “zhangsan”,

“score”: {

“English”: 69,

“Math”: 86,

“Computer”: 77

}

}

{

“name”: “lisi”,

“score”: {

“English”: 55,

“Math”: 100,

“Computer”: 88

}

}

1.根据上面给出的文档,完成如下操作:

(1)用MongoDB Shell设计出student集合;

cmd界面进入mongo命令

use mongodb_test

db.createCollection("Student")

db.Student.insertOne({name:'zhangsan',score:{English:69,Math:86,Computer:77}})

db.Student.insertOne({name:'lisi',score:{English:55,Math:100,Computer:88}})

(2)用find()方法输出两个学生的信息;

db.Student.find()

(3)用find()方法查询zhangsan的所有成绩(只显示score列);

db.Student.find({name:'zhangsan'},{'score':1})

(4)修改lisi的Math成绩,改为95。

db.Student.updateOne({name:”lisi”},{$set:{“score.Math”:NumberInt(95)}})

db.Student.find({name:”lisi”})

2.根据上面已经设计出的Student集合,用MongoDB的Java客户端编程,实现如下操作:

(1)添加数据:English:45       Math:89 Computer:100

与上述数据对应的文档形式如下:

{

“name”: “scofield”,

“score”: {

“English”  : 45,

“Math”: 89,

“Computer”: 100

}

}

(2)获取scofield的所有成绩成绩信息(只显示score列)

代码:

package Mongo;

import com.mongodb.MongoClient;

import com.mongodb.client.MongoCollection;

import com.mongodb.client.MongoCursor;

import com.mongodb.client.MongoDatabase;

import org.bson.Document;

import java.util.ArrayList;

import java.util.List;

public class MongoDBJDBC {

public static void main(String[] args) {

MongoCollection<Document> collection = getCollection("mongodb_test","Student");

insert(collection);

find(collection);

}

public static MongoCollection<Document>getCollection(String dbName, String collectionName){

MongoClient mongoClient = new MongoClient("localhost",27017);

MongoDatabase mongoDatabase = mongoClient.getDatabase(dbName);

MongoCollection<Document> collection = mongoDatabase.getCollection(collectionName);

System.out.println("连接成功");

return  collection;

}

public static void insert(MongoCollection<Document> collection){

Document document=new Document("name","scofield").append("score", new Document("English",45).append("Math", 89).append("Computer",100));

List<Document> documents=new ArrayList<Document>();

documents.add(document);

collection.insertMany(documents);

System.out.println("插入成功!");

}

public static void find(MongoCollection<Document> collection){

try{

MongoCursor<Document> cursor= collection.find(new Document("name","scofield")).projection(new Document("score",1)).iterator();

while(cursor.hasNext()){

System.out.println(cursor.next().toJson());

}

}catch(Exception e){

System.out.println("查找失败");

System.err.println( e.getClass().getName() + ": " + e.getMessage() );

}

}

}

截图:

Mongo实验的更多相关文章

  1. 云计算实验二 Docker实验-mysql、tomcat、sqlserver、redis、oracle、mongo安装

    mysql安装 下载镜像 docker pull mysql 查看镜像 docker images|grep mysql 创建启动容器 docker run --name mysqlserver -v ...

  2. golang mgo的mongo连接池设置:必须手动加上maxPoolSize

    本司礼物系统使用了golang的 mongo库 mgo,中间踩了一些坑,总结下避免大家再踩坑 golang的mgo库说明里是说明了开启连接复用的,但观察实验发现,这并没有根本实现连接的控制,连接复用仅 ...

  3. Mongodb--gridfs与分片实验

    1.放置一个大文件到gridfs,查看fs.chunks和fs.files的情况. Step1.开启一台mongod服务. ./mongod --dbpath dbs/master     登录mon ...

  4. Mongodb 主从复制与副本集实验

    1.实验主从复制,并验证复制成功,抓图实验过程  Step1:创建相应的目录 Mkdir -p ./dbs/master Mkdir -p ./dbs/slave Step2:开启主服务 ./bin/ ...

  5. MongoDB 主从复制小实验

    MongoDB 主从复制小实验 操作环境描述:WIN8  64位操作系统,内装虚拟机为CentOS 5.5 32位系统. 操作描述:跟其他关系型数据库类似,在主库进行数据操作,将数据同步到从节点,从节 ...

  6. 我是实践派之mongo的一主多从

    mongo一主多从 为什么要做一主多从? mongodb天生就是为了分布式而生的,为了保证数据读写分离和数据安全,把数据放在不同的机子上,可以减少主节点的读压力,而让从节点去承受读请求压力. 主节点用 ...

  7. Mongodb 3.4 + Centos6.5 配置 + mysql.sql转为csv 或 json导入和导出Mongo (64位系统)

    Centos下通过yum安装步骤如下: 声明:相对比那些用源码安装,少了配置和新建log和data目录,这种简单粗暴, ,创建仓库文件, vi /etc/yum.repos.d/mongodb-org ...

  8. Python3爬虫系列:理论+实验+爬取妹子图实战

    Github: https://github.com/wangy8961/python3-concurrency-pics-02 ,欢迎star 爬虫系列: (1) 理论 Python3爬虫系列01 ...

  9. mongo中的游标与数据一致性的取舍

    除了特殊注释外,本文的测试结果均基于 spring-data-mongodb:1.10.6.RELEASE(spring-boot-starter:1.5.6.RELEASE),MongoDB 3.0 ...

随机推荐

  1. Python音频操作+同时播放两个音频

    对于python而言,音频的操作可以使用pygame包中的sound 和 music对象,本博客主要讲解这两个对象. 1.sound对象 Sound对象适合处理较短的音乐,如OGG和WAV格式的音频文 ...

  2. VS Code远程链接报错Could not establish connection to “hz.matpool.com”

    VS Code远程链接报错Could not establish connection to "hz-t2.matpool.com" 输出的部分内容 安装Git git for w ...

  3. 一些JDK自带的性能分析利器

    有时候碰到服务器CPU飙升或者程序卡死之类的问题,一般都不太好定位.这类bug一般都隐藏的比较深并且还可能是偶发性的,比较棘手. 对于此类问题,一般我们都有固定的分析流程.借助于JDK自带的一些分析工 ...

  4. linux下oracle数据库的启动

    linux下oracle数据库的启动 一.切换oracle用户 命令:su - oracle 二.运行sqlplus命令,进入sqlplus环境 命令:sqlplus /nolog (nolog参数表 ...

  5. TLS 1.0 至 1.3 握手流程详解

    概述 TLS 全称为 Transport Layer Security(传输层安全),其前身是 SSL,全称为 Secure Sockets Layer(安全套接字层),它的作用是为上层的应用协议提供 ...

  6. 解决Ubuntu虚拟机占用空间与实际空间不符问题

    1.背景 右键点击Windows中的Ubuntu虚拟机文件夹,发现它占用Windows磁盘空间大小140GB: 然后进入Ubuntu,输入 df -hl 可以算出实际占用空间也大约为140GB.在Ub ...

  7. 更新或添加properties文件(保留存在的properties文件的原有格式)

    转载: https://www.cnblogs.com/wangzhisdu/p/7815549.html import java.io.BufferedWriter; import java.io. ...

  8. 常见的url编码

    URL编码值 字符 %20 空格 %22 " %23 # %25 % %26 &; %28 ( %29 ) %2B + %2C , %2F / %3A : %3B ; %3C < ...

  9. [XMAN筛选赛](web)ctf用户登录

    0x00 题目概述 就只写了几道web题,有些考察点比较明显,所以个人感觉来说web总体不难. 一航的writeup写得差不多,我这写个他没写的wirteup. 看题: 链接点进去是一个登录页面,习惯 ...

  10. 1分钟为Win10瘦身!把吃掉的硬盘找回来

    很多小伙伴升级完Win10后都发现C盘变小了,不少人以为这大概就是Win10太占磁盘空间了.但事实上,Win10和以前的操作系统一样,对于C盘空间并没有什么太高要求.出现这个问题的主要原因,是Win1 ...