mongodb入门java_NoSQL入门之MongoDB学习笔记[基本的java 和shell 应用]

AAffA0nNPuCLAAAAAElFTkSuQmCC

不一样的神兽,不一样的身手...

下载地址:点击进入下载

AAffA0nNPuCLAAAAAElFTkSuQmCC

好多版本,根据自己的需求下载。安装好后,进入bin目录,如下:

AAffA0nNPuCLAAAAAElFTkSuQmCC

使用MongoDB必须打开mongod.exe

shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的。使用shell 命令,需要启动mongo.exe。

注!!!

安装完后还要进行一项至关重要的操作,如果没有此操作,可能会导致mongo服务启动时闪退。

安装完成后一定要记得在安装mongo的根目录下新建 "x:\data\db"文件夹(血的教训,整了一天了,一直以为系统出问题,差点就重装系统了( ▼-▼ ))x为你的根目录。

AAffA0nNPuCLAAAAAElFTkSuQmCC

常用shell命令:

查询本地所有数据库名称

show dbs

切换至指定数据库环境(若无指定的数据库,则创建新的库)

use you

查询当前库下的所有聚集集合collection(相当于table)

show collections

创建聚集集合

db.createCollection('youcollection');

查询聚集集合中数据条数

db.mycollection.count();

插入数据

db.youcollection/youdb.insert({'name':'xxx','age':26});

注:往'youcollection'聚集集合或者youdb中插上一条数库,name为xxx',age为'26'

查询数据

db.youcollection/youdb.find()

注:插入时能往db下或者colleation下插入,查询的时候通过db.指定的空间.find()进行查询

查询name中包含'e'的数据

db.youcollection/youdb.find({name:/e/});

查询以a开头的数据

db.youcollection/youdb.find({name:/^a/});

查询age列数据,并去掉重复数据

db.youcollection/youdb.distinct('age');

查询前10条数据

db.youcollection/youdb.find().limit(10);

查询第1条以后的所有数据

db.youcollection/youdb.find().skip(1);

查询第1条数据

db.youcollection/youdb.findOne();

根据username修改age

db.youcollection/youdb.update({username:'jim'},{$set:{age:22}},false,true);

db.collection.update( criteria, objNew, upsert, multi )

criteria : update的查询条件,类似sql update查询内where后面的

objNew : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的

upsert : 如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

删除name为'xxx'的数据

db.youcollection/youdb.remove({name:'xxx'});

集合collection重命名

db.youcollection.renameCollection('temp');

注:将youcollection集合重命名为'temp'

删除集合

db.temp.drop();

删除当前数据库

db.dropDatabase();

AAffA0nNPuCLAAAAAElFTkSuQmCC

小伙伴!小伙伴!小小小小小小伙伴!~~

睡着了没?

AAffA0nNPuCLAAAAAElFTkSuQmCC

接着嗨~

AAffA0nNPuCLAAAAAElFTkSuQmCC

下面就是在java开发中的MongoDB如何使用:

官网:java版本MongoDB

AAffA0nNPuCLAAAAAElFTkSuQmCC

官网上有很详细的描述,可以去仔细研读一下。(不要说自己英语不好,我英语也是烂的一比。又不让你做翻译家,能看懂大概的意思就行,在配合下翻译软件,读这玩意儿——妥妥的)

我在使用MongoDB时是用的MongoTemplate:数据库和代码之间的接口(注:MongoTemplate是线程安全的)

如何创建一个MongoTemplate实例?

通过java code

@Configuration

public class AppConfig {

public @Bean Mongo mongo() throws Exception {

return new Mongo("localhost");

}

public @Bean MongoTemplate mongoTemplate() throws Exception {

return new MongoTemplate(mongo(), "mydatabase");//还有其它的初始化方法。

}

}

通过xml

使用的简单例子

增(增加的操作有两个:save、insert)

/**

* save函数根据参数条件,调用了insert或update函数:有则改之,无则加之

*

* @param entity

* @throws Exception

* @author yadong.zhang

*/

@Override

public void save(User entity) throws Exception {

this.mongoTemplate.save(entity);

}

/**

* insert的对象如果存在则不会修改之前的值,也不会重新增加

*

* @param entity

* @throws Exception

* @author yadong.zhang

*/

@Override

public void insert(User entity) throws Exception {

//save函数根据参数条件,调用了insert或update函数:有则改之,无则加之

this.mongoTemplate.insert(entity);

}

看图看操作:

AAffA0nNPuCLAAAAAElFTkSuQmCC通过insert添加时,如果存在则会报错。

AAffA0nNPuCLAAAAAElFTkSuQmCC通过save进行添加时,如果存在则会进行修改

我们可以看下save的源码(小贴士:查看MongoDB方法的源码只需把方法后的括号去掉就可以哦)

AAffA0nNPuCLAAAAAElFTkSuQmCC

慕慕们看到了吗?是不是很有意思?save底层其实是判断执行的insert或者update操作

还有就是,MongoDB的底层代码风格是不是很熟悉?(慕慕:这TM不就是JS吗?我:可不是喽~~!!!)(方言此处不解释)

AAffA0nNPuCLAAAAAElFTkSuQmCC

/**

* 删除

*

* @param user

* @throws Exception

* @author yadong.zhang

*/

@Override

public void delete(User user) throws Exception {

this.mongoTemplate.remove(user);

}

/**

* 修改操作

*

* @param entity

* @throws Exception

* @author yadong.zhang

*/

@Override

public void update(User entity) throws Exception {

Query query = new Query();

query.addCriteria(new Criteria("telephone").is(entity.getTelephone()));

Update update = new Update();

update.set("telephone", entity.getTelephone());

...

this.mongoTemplate.updateFirst(query, update, User.class);

}

查(单)

/**

* 根据手机获取单个

*

* @param tel

* @return

* @throws Exception

* @author yadong.zhang

*/

@Override

public User getByTel(String tel) throws Exception {

Query query = new Query();

query.addCriteria(new Criteria("telephone").is(tel));

return this.mongoTemplate.findOne(query, User.class);

}

查(多)

/**

* 获取集合

*

* @return

* @throws Exception

* @author yadong.zhang

*/

public List getList() throws Exception {

return mongoTemplate.findAll(User.class);

}

接下来就是关于MongoDB最最最重要的一部分:

...

...

那就是:今天完事了!!!

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

我可以对一个人无限的好,前提是值得。 ——慕冬雪

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值