Mongodb的简单操作
【简介】
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。
Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
mongodb是“面向集合”的,数据被分组存储在数据集中,被称为一个集合(Collection)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。
【基本概念】
文档:键值对的有序集,如{"age":25, "name":"John", "gender":"female"}--相当于关系型数据库里面表的行(记录,key为列,value为每一列的值)
集合:一组文档的集,--相当于关系型数据库里面的表(table)
数据库:多个文档构成的集合,--相当于关系型数据库的数据库(database)
1.对数据库的操作
#查询所有数据库
show dbs;
#查看当前所使用的数据库
db
db.getName()
#切换或创建数据库,当不存在时会自动创建,需要进行创建集合的操作之后,才会在show dbs里面显示出来
use dbname
#当前db连接的地址
db.getMongo()
#当前db的状态
db.stats()
2.对集合的操作
#创建集合
db.createCollection(“collName”, {size: 20, capped: 5, max: 100}); //{}里面的参数可选,不加表示不对容量做限制
#得到指定集合
db.getColleciton("collName")
#得到当前db所有集合的名称
db.getCollectionNames()
3.对用户的操作
#显示当前db下的所有用户
show users
#添加用户
db.addUser("name");
db.addUser("userName", "pwd123", true);
#删除用户
db.removeUser("userName")
4.集合的查询(都是指当前db)
#查询当前db下指定集合的所有文档
db.collName.find() ---联想:select * from collName;
#查询指定集合对某列去重之后的数据
db.collName.distinct("name") ---联想:select distinct name from collName;
#根据某列指定值查询
db.collName.find({"age": 25}) ---联想:select * from collName where age = 25;
#根据大于或等于查询
db.collName.find({"age": {$gt :20}}) --- age > 20
db.collName.find({"age": {$lt :20}}) --- age < 20
($gte则表示>=, $lte则表示<=)
#根据区间查询
db.collName.find({"age": {$gt :20, $lt:30}}) ---联想:select * from collName where age>20 and age<30;
#模糊匹配查询
db.collName.find({"name", /mongo/}) ---联想:select * from collName where name like '%mongo%';
db.collName.find({"name", /^mongo/}) ---联想:select * from collName where name like 'mongo%';(以……开头)
#查询指定列
db.collName.find({}, {name: 1, age: 1}); ---联想:select name, age from collName;
db.collName.find({age: {$gt: 25}}, {name: 1, age: 1}); ---联想:select name, age from collName where age > 25;(根据条件查询指定列)
#多条件查询
db.collName.find({name: 'Fanfan', age: 40}); ---联想:select * from collName where name = 'Fanfan' and age = 40;
#查询前几条
db.collName.find().limit(10)
#查询10条以后的
db.collName.find().skip(10)
#分页查询第5-10条
db.collName.find().limit(10).skip(5)
#查询结果数
db.collName.find({"age", {$lte:23}}).count() ---联想:select count(1) from collName where age <= 23
#in, or
db.collName.find({"user_id":{$in:["12345","123"]}}) ---联想: select * from collName where user_id in("12345", "123")
db.collName.find({$or: [{age: 22}, {age: 25}]}); ---联想:select * from collName where age = 22 or age = 25
($nin表示not in)
#按某列排序(-1表示降序)
db.collName.find().sort({age:1}) ---联想:select * from collName order by age (desc)
5.添加
db.collName.save({name: 'Lily', age: 25, gender: "female"});
db.collName.insert({name: 'Lily', age: 25, gender: "female"});
--联想:insert into collName(name, age, gender) values('Lily', 25, 'female');
6.修改
db.collName.update({age: 25}, {$set: {name: 'changeName'}}, false, true); ---联想:update collName set name = ‘changeName’ where age = 25;
db.collName.update({name: 'Lisi'}, {$inc: {age: 50}}, false, true); ---联想:update collName set age = age + 50 where name = ‘Lisi’;
db.collName.update({name: 'Lisi'}, {$inc: {age: 50}, $set: {name: 'hoho'}}, false, true); ---联想:update collName set age = age + 50, name = ‘hoho’ where name = ‘Lisi’;
7.删除
db.collName.remove({age: 32}); ---联想:delete from collName where age = 32;
8.复合操作
db.collName.findAndModify({
query: {age: {$gte: 25}},
sort: {age: -1},
update: {$set: {name: 'a2'}, $inc: {age: 2}},
remove: true
});
db.runCommand({ findandmodify : "collName",
query: {age: {$gte: 25}},
sort: {age: -1},
update: {$set: {name: 'Angela'}, $inc: {age: 2}},
remove: true
});
9.加索引
#加唯一索引
db.collection.ensureIndex({"chatId":1},{unique:true})
#加联合索引
db.collection.ensureIndex({"chatId":1, "pk":1})
10.其他
1)print("Hello World") ---打印
2)for (var i = 0; i < 30; i++) {
... db.collName.save({name: "u_" + i, age: 22 + i, sex: i % 2});
... };---循环添加
3)var cursor = db.collName.find();
> while (cursor.hasNext()) {
printjson(cursor.next()); ---把集合的每条document打印成json格式的字符串
}---游标遍历
4)db.collName.find().forEach(printjson);---循环迭代
(find里面也可以加过滤条件)
相关推荐
### MongoDB Java Driver 简单操作详解 #### 一、简介 MongoDB 是一款非常流行的文档型数据库系统,因其灵活性和高性能而被广泛应用于多种场景之中。为了方便开发者使用 Java 进行开发,MongoDB 提供了官方的 Java ...
Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单的方式来访问和操作MongoDB数据库。这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDB...
本教程将详细介绍如何使用Java与MongoDB进行交互,包括基本的增删改查(CRUD)操作。首先,我们需要引入MongoDB的Java驱动程序,这通常通过Maven或Gradle的依赖管理来实现。 1. **添加依赖** 在Maven的`pom.xml`...
3. **CRUD操作**:MongoDB支持创建(CREATE)、读取(READ)、更新(UPDATE)和删除(DELETE)操作,API简单易用。 4. **查询语言**:MongoDB提供了强大的查询语言,可以进行复杂的数据筛选和聚合操作。 5. **分片与复制**:...
在MongoDB中,CRUD(创建、读取、更新、删除)操作相对简单,特别是更新操作,通过Modifier可以直接在文档中修改数据,而不需要先读取、修改后再写回。对于批量删除集合的操作,虽然Java驱动没有提供直接方法,但...
MongoDB的安全机制相较于传统的关系型数据库来说较为简单。虽然文档开头提到“没有绝对安全的环境”,但这并不意味着MongoDB不具备安全性。以下是一些基本的安全措施: 1. **启用认证**:通过在启动参数中加入`auth...
在"Java使用MongoDB的简单程序"中,我们将学习如何使用Java驱动程序连接到MongoDB数据库。Java驱动程序提供了一套API,使得开发者可以轻松地进行数据操作。基本步骤包括:创建MongoClient实例以连接到MongoDB服务器...
以上就是使用Java连接MongoDB并进行基本操作的简单示例。在实际应用中,可能还需要处理异常、连接池管理、事务支持等复杂场景。对于更复杂的查询和聚合操作,可以使用`aggregate()`方法配合聚合框架。总之,MongoDB...
### MongoDB数据库简单介绍 #### MongoDB概述 MongoDB是一款开源、基于分布式文件存储的NoSQL数据库系统,它使用C++语言编写。与传统的关系型数据库不同,MongoDB采用文档数据模型来存储数据,这种数据模型非常灵活...
- 驱动程序提供了一套丰富的API,使得在Java应用中集成MongoDB变得简单。 10. **SSH访问** - Secure Shell (SSH) 通常用于远程登录和管理MongoDB服务器。 - 可以设置SSH隧道以安全地访问MongoDB实例。 11. **TE...
在本项目"Express +MongoDB 简易后台登录系统.zip"中,我们将会探讨如何使用Express框架和MongoDB数据库构建一个简单的Web后台登录系统。这个系统是针对毕业设计或Web开发实践的需求而设计的,它涉及到Node.js的后端...
更新和删除操作同样简单。例如,更新年龄大于25的用户: ```java UpdateResult updateResult = collection.updateMany(gt("age", 25), new Document("$set", new Document("age", 26))); System.out.println(update...
手册提供了一系列监控MongoDB的方法和工具,包括使用SNMP(简单网络管理协议)监控和管理mongod进程,以及旋转日志文件的方法和步骤。这些监控手段可以帮助数据库管理员及时发现系统问题并进行调整。 ### 数据库...
本文将深入探讨如何在C# ASP.NET项目中进行MongoDB的基本操作,包括连接数据库、增删改查(CRUD)等关键功能。 首先,我们需要引入MongoDB的C#驱动程序。可以通过NuGet包管理器安装`MongoDB.Driver`库。在Visual ...
例如,你可以创建一个简单的MEX函数来连接到MongoDB服务器,如下所示: ```c #include "mex.h" #include void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { // MongoDB连接参数 ...
Springboot整合MongoDB进行CRUD操作的两种方式 在分布式和微服务架构中,Springboot和MongoDB是非常流行的技术栈。 Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库。两者在实际应用中使用...
【基于SphinxMySQL和MongoDB的简易论坛】 在IT领域,构建一个简易论坛涉及到多个关键技术,其中Sphinx、MySQL和MongoDB是实现高效数据管理和检索的重要工具。本论坛设计利用了这些技术的优势,以提供一个功能完备且...
对于开发者来说,MongoDB还提供了丰富的编程语言驱动,如Python的PyMongo、Java的MongoDB Java Driver等,方便在各种应用中集成数据库操作。 在"工具"这个标签下,我们可能讨论到MongoDB的管理工具,如MongoDB ...
MongoDB是一种流行的开源、分布式文档型数据库,...无论是简单的CRUD操作,还是复杂的聚合查询,甚至是分布式事务,都可以轻松应对。在实际项目中,根据需求选择合适的API和设计模式,可以大大提高开发效率和代码质量。