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. 【阅读SpringMVC源码】手把手带你debug验证SpringMVC执行流程

    ✿ 阅读源码思路: 先跳过非重点,深入每个方法,进入的时候可以把整个可以理一下方法的执行步骤理一下,也可以,理到某一步,继续深入,回来后,接着理清除下面的步骤. ✿ 阅读本文的准备工作,预习一下Spr ...

  2. Ghost:凛冬散尽,长夜终明

    你须领先于一切离别,仿佛它们全在你身后 像刚刚逝去的冬天 因为许多冬天中有一个无尽的冬天 使你过冬之心终究捱[ái]过                                          ...

  3. php在windows上安装kafka扩展

    一.下载kafka扩展包 链接:https://pecl.php.net/package/rdkafka 二.解压安装包 三.修改php.ini 复制librdkafka.dll 到php\php7. ...

  4. Ubuntu 16.04.3 Server 版安装过程图文详解

    Ubuntu 16.04.3 Server 版安装过程图文详解 首先,我们会进入系统安装的第一个界面,开始系统的安装操作.每一步的操作,左下角都会提示操作方式! 1.选择系统语言-English2.选 ...

  5. ospf应用简单

    ospf应用简单 OSPF (SPF) 属于链路状态路由选择协议,并且是公有标准, 理论上是没有网络规模限制的: 支持网络的层次化设计,可以将网络分为2层.   层,是通过"区域" ...

  6. 【Azure Developer - 密钥保管库 】使用 Python Azure SDK 实现从 Azure Key Vault Certificate 中下载证书(PEM文件)

    问题描述 在Azure Key Vault中,我们可以从Azure门户中下载证书PEM文件到本地. 可以通过OpenSSL把PFX文件转换到PEM文件.然后用TXT方式查看内容,操作步骤如下图: Op ...

  7. CF1428B题解

    打比赛的时候sb了,用了一个似乎原本可以不用的东西来找环... 首先,根据题意,我们可以连成一张图,而蛇能不能回到自己的家, 只需要在一个环上就行了. 问题是怎么找环,我用了 Tarjan... 具体 ...

  8. BBS项目分布搭建四(点赞点踩及评论功能准备)

    BBS项目分布搭建四(点赞点踩及评论功能) 1. 点赞点踩样式准备 # 在base.html文件中 head标签内 添加css模块: {% block css %} {% endblock %} # ...

  9. office online在线预览服务与https的tls证书兼容问题

    问题现象:k8s环境配置证书后,无法调用office online 服务,附件无法预览 问题原因:ingress默认启用得是tls1.2,不兼容以下版本 k8s环境解决方法:增加ingress配置,兼 ...

  10. RDMA--libibverbs代码分析(2)-设备发现

    基于上一篇文章https://www.cnblogs.com/xingmuxin/p/11057845.html 我们现在从分析libibverbs代码,跳入到分析内核代码,代码位置在./driver ...