不一样的神兽,不一样的身手...
下载地址:点击进入下载
好多版本,根据自己的需求下载。安装好后,进入bin目录,如下:
使用MongoDB必须打开mongod.exe
shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的。使用shell 命令,需要启动mongo.exe。
注!!!
安装完后还要进行一项至关重要的操作,如果没有此操作,可能会导致mongo服务启动时闪退。
安装完成后一定要记得在安装mongo的根目录下新建 "x:\data\db"文件夹(血的教训,整了一天了,一直以为系统出问题,差点就重装系统了( ▼-▼ ))x为你的根目录。
常用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();
小伙伴!小伙伴!小小小小小小伙伴!~~
睡着了没?
接着嗨~
下面就是在java开发中的MongoDB如何使用:
官网:java版本MongoDB
官网上有很详细的描述,可以去仔细研读一下。(不要说自己英语不好,我英语也是烂的一比。又不让你做翻译家,能看懂大概的意思就行,在配合下翻译软件,读这玩意儿——妥妥的)
我在使用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
<!-- mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 -->
<mongo:db-factory dbname="xx" mongo-ref="mongo" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongo" />
<constructor-arg name="databaseName" value="xx" />
</bean>
使用的简单例子
- 增(增加的操作有两个: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);
}
看图看操作:
通过insert添加时,如果存在则会报错。
通过save进行添加时,如果存在则会进行修改
我们可以看下save的源码(小贴士:查看MongoDB方法的源码只需把方法后的括号去掉就可以哦)
慕慕们看到了吗?是不是很有意思?save底层其实是判断执行的insert或者update操作
还有就是,MongoDB的底层代码风格是不是很熟悉?(慕慕:这TM不就是JS吗?我:可不是喽~~!!!)(方言此处不解释)
- 删
/**
* 删除
*
* @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<User> getList() throws Exception {
return mongoTemplate.findAll(User.class);
}
接下来就是关于MongoDB最最最重要的一部分:
...
...
那就是:今天完事了!!!
我可以对一个人无限的好,前提是值得。 ——慕冬雪
热门评论
不错 很喜欢。和老师讲的一样
我可以对一个人无限地好。。前提是值得
慕冬雪是谁?