Baizhi MongoDB GZhY

[root@HadoopNode00 ~]# tar -zxvf mongodb-linux-x86_64-3.6.2.tgz -C /usr/
mongodb-linux-x86_64-3.6.2/README
mongodb-linux-x86_64-3.6.2/THIRD-PARTY-NOTICES
mongodb-linux-x86_64-3.6.2/MPL-2
mongodb-linux-x86_64-3.6.2/GNU-AGPL-3.0
mongodb-linux-x86_64-3.6.2/bin/mongodump
mongodb-linux-x86_64-3.6.2/bin/mongorestore
mongodb-linux-x86_64-3.6.2/bin/mongoexport
mongodb-linux-x86_64-3.6.2/bin/mongoimport
mongodb-linux-x86_64-3.6.2/bin/mongostat
mongodb-linux-x86_64-3.6.2/bin/mongotop
mongodb-linux-x86_64-3.6.2/bin/bsondump
mongodb-linux-x86_64-3.6.2/bin/mongofiles
mongodb-linux-x86_64-3.6.2/bin/mongoreplay
mongodb-linux-x86_64-3.6.2/bin/mongoperf
mongodb-linux-x86_64-3.6.2/bin/mongod
mongodb-linux-x86_64-3.6.2/bin/mongos
mongodb-linux-x86_64-3.6.2/bin/mongo
mongodb-linux-x86_64-3.6.2/bin/install_compass
[root@HadoopNode00 ~]# cd /usr/
[root@HadoopNode00 usr]# ls
azkaban-exec-server  azkaban-web-server  etc    include  lib64    local                       sbin   spark-2.4.3  tmp
azkaban-solo-server  bin                 games  lib      libexec  mongodb-linux-x86_64-3.6.2  share  src
[root@HadoopNode00 usr]# cd mongodb-linux-x86_64-3.6.2/
[root@HadoopNode00 mongodb-linux-x86_64-3.6.2]# ls
bin  GNU-AGPL-3.0  MPL-2  README  THIRD-PARTY-NOTICES
[root@HadoopNode00 mongodb-linux-x86_64-3.6.2]# cd bin/
[root@HadoopNode00 bin]# ls
bsondump  install_compass  mongo  mongod  mongodump  mongoexport  mongofiles  mongoimport  mongoperf  mongoreplay  mongorestore  mongos  mongostat  mongotop
[root@HadoopNode00 bin]# mkdir -p /data/db
[root@HadoopNode00 bin]# ls
bsondump  install_compass  mongo  mongod  mongodump  mongoexport  mongofiles  mongoimport  mongoperf  mongoreplay  mongorestore  mongos  mongostat  mongotop
[root@HadoopNode00 bin]# cd ..
[root@HadoopNode00 mongodb-linux-x86_64-3.6.2]# ls
bin  GNU-AGPL-3.0  MPL-2  README  THIRD-PARTY-NOTICES
[root@HadoopNode00 mongodb-linux-x86_64-3.6.2]# bin/mongod --port 27017 --bind_ip_all --dbpath /data/db
2020-02-29T12:21:41.867+0800 I CONTROL  [initandlisten] MongoDB starting : pid=93427 port=27017 dbpath=/data/db 64-bit host=HadoopNode00
2020-02-29T12:21:41.868+0800 I CONTROL  [initandlisten] db version v3.6.2
2020-02-29T12:21:41.868+0800 I CONTROL  [initandlisten] git version: 489d177dbd0f0420a8ca04d39fd78d0a2c539420
2020-02-29T12:21:41.868+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2020-02-29T12:21:41.868+0800 I CONTROL  [initandlisten] modules: none
2020-02-29T12:21:41.868+0800 I CONTROL  [initandlisten] build environment:
2020-02-29T12:21:41.868+0800 I CONTROL  [initandlisten]     distarch: x86_64
2020-02-29T12:21:41.868+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2020-02-29T12:21:41.868+0800 I CONTROL  [initandlisten] options: { net: { bindIpAll: true, port: 27017 }, storage: { dbPath: "/data/db" } }
2020-02-29T12:21:42.039+0800 I STORAGE  [initandlisten]
2020-02-29T12:21:42.039+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2020-02-29T12:21:42.039+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2020-02-29T12:21:42.039+0800 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=256M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
2020-02-29T12:21:51.455+0800 I CONTROL  [initandlisten]
2020-02-29T12:21:51.455+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-02-29T12:21:51.455+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2020-02-29T12:21:51.456+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2020-02-29T12:21:51.456+0800 I CONTROL  [initandlisten]
2020-02-29T12:21:51.457+0800 I CONTROL  [initandlisten]
2020-02-29T12:21:51.457+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2020-02-29T12:21:51.457+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2020-02-29T12:21:51.458+0800 I CONTROL  [initandlisten]
2020-02-29T12:21:51.458+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2020-02-29T12:21:51.458+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2020-02-29T12:21:51.458+0800 I CONTROL  [initandlisten]
2020-02-29T12:21:51.459+0800 I STORAGE  [initandlisten] createCollection: admin.system.version with provided UUID: 6cc3e154-d391-4e4e-b260-23c273d15e95
2020-02-29T12:21:51.571+0800 I COMMAND  [initandlisten] setting featureCompatibilityVersion to 3.6
2020-02-29T12:21:51.577+0800 I STORAGE  [initandlisten] createCollection: local.startup_log with generated UUID: 1778b7ff-37b5-4afa-a5e2-71f7c746574e
2020-02-29T12:21:52.418+0800 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
2020-02-29T12:21:52.434+0800 I NETWORK  [initandlisten] waiting for connections on port 27017
[root@HadoopNode00 mongodb-linux-x86_64-3.6.2]# bin/mongo 127.0.0.1:27017
MongoDB shell version v3.6.2
connecting to: mongodb://127.0.0.1:27017/test
MongoDB server version: 3.6.2
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user
Server has startup warnings:
2020-02-29T12:21:42.039+0800 I STORAGE  [initandlisten]
2020-02-29T12:21:42.039+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2020-02-29T12:21:42.039+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2020-02-29T12:21:51.455+0800 I CONTROL  [initandlisten]
2020-02-29T12:21:51.455+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-02-29T12:21:51.455+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2020-02-29T12:21:51.456+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2020-02-29T12:21:51.456+0800 I CONTROL  [initandlisten]
2020-02-29T12:21:51.457+0800 I CONTROL  [initandlisten]
2020-02-29T12:21:51.457+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2020-02-29T12:21:51.457+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2020-02-29T12:21:51.458+0800 I CONTROL  [initandlisten]
2020-02-29T12:21:51.458+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2020-02-29T12:21:51.458+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2020-02-29T12:21:51.458+0800 I CONTROL  [initandlisten]
2020-02-29T12:25:37.241+0800 E -        [main] Error loading history file: FileOpenFailed: Unable to fopen() file /root/.dbshell: No such file or directory

show dbs;
admin 0.000GB
config 0.000GB
local 0.000GB

show databases;
admin 0.000GB
config 0.000GB
local 0.000GB

db
test

use admin;
switched to db admin

db
admin

help
db.help() help on db methods
db.mycoll.help() help on collection methods
sh.help() sharding helpers
rs.help() replica set helpers
help admin administrative help
help connect connecting to a db help
help keys key shortcuts
help misc misc things to know
help mr mapreduce

    show dbs                     show database names
    show collections             show collections in current database
    show users                   show users in current database
    show profile                 show most recent system.profile entries wit                                                                                 h time >= 1ms
    show logs                    show the accessible logger names
    show log [name]              prints out the last segment of log in memor                                                                                 y, 'global' is default
    use <db_name>                set current database
    db.foo.find()                list objects in collection foo
    db.foo.find( { a : 1 } )     list objects in foo where a == 1
    it                           result of the last line evaluated; use to f                                                                                 urther iterate
    DBQuery.shellBatchSize = x   set default number of items to display on s                                                                                 hell
    exit                         quit the mongo shell

use baizhi #創建數據庫
switched to db baizhi

db.users.insertOne({"name":"aa", "sex":"男","age":18})
db.users.insertOne({"name":"bb", "age":25})
db.users.insertOne({"name":"ww"})
db.users.insertMany([{"name":"zl"},{"name":"tq"},{"name":"win7"}])
	// 删除第一条符合条件的结果
db.users.deleteOne("name", "win7")
	// 删除所有的符合条件的结果
db.user.deleteMany("name", "win7")
db.users.deleteMany({"name":"zs", "sex":"男"})
	// 删除ls 或者 ww $or是操作符
db.users.deleteMany({"$or": [{"name":"ls"},{"name":"ww"}]})
	// 查所有
db.users.find()
db.users.find({"name":"tq"})
db.users.find({"name":"tq"},{"_id":1,"name":1})

在这里插入图片描述

	// 或查询
db.users.find({"$or":[{"name":"zs"},{"name":"ls"}]})
	// 范围查询
db.users.find({"age":{"$gt":15,"$lt":30}})
db.users.find({"age":{"$ne":18}})
	// 模糊查询
db.users.find({"name":/w/})
	// 正则查询
db.users.find({"name":{"$regex":/^z.*/}})
	// 枚举查询
db.users.find({"name":{"$in":["tq","ls"]}})
	// -1:降序 1:升序
db.users.find().sort({"_id":-1})
	// skip:行下标 limit:每页显示的条数
db.users.find().skip(0).limit(2)
	// 
db.users.find({"append_comment.1":"1楼是傻逼"})
	// 修改
db.users.update({"name":"aa"},{"$set":{"age":28}})
	// 
db.users.update({"name":"aa"},{"$set":{"age":28}})
db.places.insert( {
    name: "清华大学",
   location: { type: "Point", coordinates: [ 116.330105,40.010497 ] },
   category: "Parks"
} );
db.places.insert( {
   name: "北京大学",
   location: { type: "Point", coordinates: [ 116.322918,40.021217 ] },
   category: "Parks"
} );
db.places.insert( {
   name: "中国人民大学",
   location: { type: "Point", coordinates: [ 116.319181,39.976446 ] },
   category: "Stadiums"
} );
db.places.insert( {
   name: "北京科技大学",
   location: { type: "Point", coordinates: [ 116.366037,39.996348 ] },
   category: "Stadiums"
} );
#创建球面索引
db.places.createIndex( { location: "2dsphere" } )
db.places.find(
   {
     location:
       { $near:
          {
            $geometry: { type: "Point",  coordinates: [ 116.330105,40.010497 ] },
            $minDistance: 1000,
            $maxDistance: 5000
          }
       }
   }
)

MongoDB操作 CRUD操作
db.users.insert({“name”:“aa”,“sex”:“男”,“age”:18}) db.users.insert({“name”:“bb”,“age”:25}) db.users.insert({“name”:“赵日天”,“comment:”:“很好吃”,“append_comment”:[{“1楼”:“好吃个毛线”},{“2楼”:“1 楼是傻逼”}]}) db.users.insertOne({“name”:“ww”}) db.users.insertMany([{“name”:“zl”},{“name”:“tq”},{“name”:“wb”}]} # 等价于 delete from users where name = ‘wb’ # deleteone只会删除第一个条符合条件的结果 db.users.deleteOne({“name”:“wb”}) # deletemany会删除所有符合条件的结果 db.users.deleteMany({“name”:“wb”}) # 删除名字叫做zs并且性别是男性的用户信息 db.users.deleteMany({“name”:“zs”,“sex”:“男”}) # 删除名字叫做ls或者ww的用户信息信息 KaTeX parse error: Expected '}', got 'EOF' at end of input: …s.deleteMany({"or":[{“name”:“ls”},{“name”:“ww”}]}) # 查所有 db.users.find() db.users.find({}) # 等值查询 where 条件查询 投影查询(指定返回的结果字段) # select id,name from t_user db.users.find({“name”:“赵日天”},{"_id":1,“name”:1}) # or查询 db.users.find({"$or":[{“name”:“zs”},{“name”:“ls”}]}) # 范围查询 查询年龄在15岁到30岁之间的用户 $lt $gt $lte $gte $ne KaTeX parse error: Expected '}', got 'EOF' at end of input: ….find({"age":{"gte":18,“KaTeX parse error: Expected 'EOF', got '}' at position 7: lt":30}̲}) db.users.fin…ne”:18}}) db.users.find({“age”:18}) # 模糊查询 # 名字中包含s的相关用户 db.users.find({“name”:/s/}) # 使用正则查询名字以z开头的相关用户 db.users.find({“name”:{"$regex":/^z.*/}})
地理位置查询

枚举查询 in # 查询名字是zs或者ls的相关用户 select * from t_user where name in[‘zs’,‘ls’] db.users.find({“name”:{"$in":[“zs”,“ls”]}}) # 排序 order by 排序规则:升序 1 降序 -1

db.users.find().sort({"_id":-1}) # 分页 skip: 行下标 (nowPage-1)pageSize limit: 每页显示的结果条数 db.users.find().skip(4).limit(2) # 根据append_comment中1楼是傻逼查询 db.users.find({“append_comment.1”:“1楼是傻逼”}) # 将名字aa用户年龄修改为28岁 KaTeX parse error: Expected '}', got 'EOF' at end of input: …"name":"aa"},{"set":{“age”:28}}) db.users.updateMany({“name”:“aa”},{"$inc":{“age”:3}}) # 地理位置查询 实现附近的景点 db.places.insert( { name: “圆明园”, location: { type: “Point”, coordinates: [ 116.310701,40.01547 ] }, category: “Parks” } ); db.places.insert( { name: “清华大学”, location: { type: “Point”, coordinates: [ 116.318966,40.015581] }, category: “Parks” } ); db.places.insert( { name: "后海望海楼 ", location: { type: “Point”, coordinates: [ 116.392842,39.949265] }, category: “Parks” } ); db.places.insert( { name: “天安门 “, location: { type: “Point”, coordinates: [ 116.403874,39.916734] }, category: “Parks” } ); # 创建球面索引 db.places.createIndex( { location: “2dsphere” } ) # 根据提供的坐标点 查询符合条件的数据
聚合管道
GridFS Note: GridFS特别适合流媒体存储,如视频、音频文件等
Spring Data MongoDB
db.places.find( { location: { $near: { $geometry: { type: “Point”, coordinates: [116.344549,39.998573 ] }, $minDistance: 0, KaTeX parse error: Expected 'EOF', got '}' at position 19: …Distance: 5000 }̲ } } )# 聚合管道 db…match”:{}},{“KaTeX parse error: Expected '}', got 'EOF' at end of input: group":{_id:"sex”,avg:{ a v g : " avg:" avg:"total_money”}}}]) # MapReduce # 通过MR程序计算男性或者女性的平均消费能力 db.orders.mapReduce(function(){emit(this.sex,this.total_money)},function(key,values){return Array.avg(values)},{query:{},out:“order_result”}) # GridFS [root@hadoop mongodb-linux-x86_64-3.6.2]# bin/mongofiles --host 127.0.0.1 --port 27017 put ~/nginx-1.14.2.tar.gz 2019-03-28T15:33:51.431+0800 connected to: 127.0.0.1:27017 added file: /root/nginx-1.14.2.tar.gz [root@hadoop mongodb-linux-x86_64-3.6.2]# bin/mongofiles --host localhost --port 27017 get_id ‘ObjectId(“5c9c78df0238775a0660084d”)’ 2019-03-28T15:41:09.191+0800 connected to: localhost:27017
finished writing to: /root/nginx-1.14.2.tar.gz
Maven标签 准备Spring配置文件 创建实体类 配置映射关系
org.springframework.data spring-data-mongodb 2.0.13.RELEASE <?xml version="1.0" encoding="UTF-8"?>
<mongo:mongo-client host=“192.168.11.131” port=“27017” id=“mongoClient”> </mongo:mongo-client>
<mongo:db-factory dbname=“baizhi” mongo-ref=“mongoClient”/>
package com.baizhi.entity; import org.springframework.data.annotation.Id; import org.springframework.data.annotation.PersistenceConstructor; import org.springframework.data.mongodb.core.mapping.Document; import java.io.Serializable; import java.util.Date; // 实体对象映射的集合信息 @Document(collection = “persons”) public class Person implements Serializable { @Id private String id;
private String name; private Double salary; private Date birthday; public Person() { }// 从mongodb中恢复数据时调用的构造方法 @PersistenceConstructor public Person(String id, String name, Double salary, Date birthday) { this.id = id; this.name = name; this.salary = salary; this.birthday = birthday; }@Override public String toString() { return “Person{” + “id=” + id + “, name=’” + name + ‘’’ + “, salary=” + salary + “, birthday=” + birthday + ‘}’; }public String getId() { return id; }public void setId(String id) { this.id = id; }public String getName() { return name; }public void setName(String name) { this.name = name; }public Double getSalary() { return salary; }public void setSalary(Double salary) { this.salary = salary; }
创建自定义的Repository 或者创建自定义方法 public Date getBirthday() { return birthday; }public void setBirthday(Date birthday) { this.birthday = birthday; } }package com.baizhi.dao; import com.baizhi.entity.Person; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.stereotype.Repository; @Repository public interface CustomRepository extends MongoRepository<Person,String> { }package com.baizhi.dao; import com.baizhi.entity.Person; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.stereotype.Repository; import java.util.List; /
** 自定义方法 实现对mongodb的操作 * 符合mongodb规范 无需写方法的实现 / @Repository public interface CustomRepository2 extends MongoRepository<Person,String> { /** db.persons.find({“name”:值}) * @param name * @return / public List findByName(String name); /** 根据关键字模糊查询 * @param keyword * @return
测试 */ public List findByNameLike(String keyword); }package com.baizhi.test; import com.baizhi.dao.CustomRepository; import com.baizhi.dao.CustomRepository2; import com.baizhi.entity.Person; import com.mongodb.client.result.UpdateResult; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import java.util.Arrays; import java.util.Date; import java.util.List; public class SpringDataMongoTest { public static void main(String[] args) { ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext(“classpath:applicationContext.xml”); CustomRepository repository = applicationContext.getBean(CustomRepository.class); CustomRepository2 repository2 = applicationContext.getBean(CustomRepository2.class); MongoTemplate mongoTemplate = applicationContext.getBean(MongoTemplate.class); // 新增一条记录 //repository.save(new Person(null,“zs”,1000D,new Date())); //repository.saveAll(Arrays.asList(new Person(null,“ls”,2000D,new Date()),new Person(null,“ww”,3000D,new Date()))); // 删除一条记录 //repository.delete(new Person(“5c9c85a108e9eb15f4c0a693”,null,null,null)); // 查询 // List persons = repository.findAll(); // 排序 // List persons = repository.findAll(Sort.by(Sort.Direction.DESC,“salary”)); // persons.forEach(p -> System.out.println§); // 分页 // Page page = repository.findAll(new PageRequest(0, 1)); //System.out.println(“总页数:”+page.getTotalPages()); // page.forEach(person -> System.out.println(person));
Spring Boot 整合MongoDB
pom.xml // 修改 //repository.save(new Person(“5c9c854c08e9eb1b946c8064”,“zs”,2500d,new Date())); // 自定义方法测试 // List people = repository2.findByName(“zs”); // List people = repository2.findByNameLike(“s”); // System.out.println(people); // 第三种操作方法 // 查询工资在2000到3000元之间的相关用户 // Query query = Query.query(Criteria.where(“salary”).gte(2000D).lte(3000)); // List people = mongoTemplate.find(query, Person.class); // people.forEach( person -> System.out.println(person)); // 修改用户名字叫做zs或者ls的工资3500 Query query = Query.query(Criteria.where(“name”).in(“zs”,“ls”)); System.out.println(query.getQueryObject().toString()); Update update = Update.update(“salary”,3500D); UpdateResult updateResult = mongoTemplate.updateMulti(query, update, Person.class); System.out.println(updateResult.getModifiedCount()); } }<?xml version="1.0" encoding="UTF-8"?> <project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance"xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven- 4.0.0.xsd”> 4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.3.RELEASE
com.baizhi springboot_mongodb 0.0.1-SNAPSHOT springboot_data Demo project for Spring Boot <java.version>1.8</java.version>
application.properties 其余操作方式同Spring Data MongoDB
… MongoDB集群
org.springframework.boot spring-boot-starter-data-mongodb org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin spring.data.mongodb.database=baizhi spring.data.mongodb.host=192.168.11.131 spring.data.mongodb.port=27017

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值