mongodb 入门笔记
0. mongoDB基础概念
- 文档
- 可类比为关系数据库中的行
- 多个键及其关联的值
- 其中键值是有序的
- 区分类型及大小写
- 键是唯一的,若重复则认为定义非法
- 集合
- 可类比为关系数据库中的表
- 一组文档
- 可采用命名空间划分子集合,如“blog.class1”,“blog.class2”
- 数据库
- 多个集合
- 一个mongodb实例可支持多个数据库;
- 每个数据库相对独立,具备独立的权限控制,且物理上属于不同的硬件;
1. mongoDB 安装
- 下载mongodb-win32-i386-2.4.1并解压至本地目录
- 在相应目录下创建data/db 文件夹
- 执行mongod.exe -dbpath ./data/db,此时提示“waiting for connectoin on port 27017”
- 在浏览器中登入 localhost:27017
- 之后在浏览器登入 localhost:28017
- 重新启动一个控制台,执行mongo.exe,成功!
2. mongoDB操作与mysql SQL语句对应关系,参考《mongoDB使用手册》
db.test.find({'name':'foobar'}) <==> select * from test where name='foobar' db.test.find() <==> select * from test db.test.find({'ID':10}).count() <==> select count(*) from test where ID=10 db.test.find().skip(10).limit(20) <==> select * from test limit 10,20 db.test.find({'ID':{$in:[25,35,45]}}) <==> select * from test where ID in (25,35,45) db.test.find().sort({'ID':-1}) <==> select * from test order by ID desc db.test.distinct('name',{'ID':{$lt:20}}) <==> select distinct(name) from test where ID<20 db.test.group({key:{'name':true},cond:{'name':'foo'},reduce:function(obj,prev){prev.msum+=obj.marks;},initial:{msum:0}}) <==> select name,sum(marks) from test group by name db.test.find('this.ID<20',{name:1}) <==> select name from test where ID<20 db.test.insert({'name':'foobar','age':25})<==>insert into test ('name','age') values('foobar',25) db.test.remove({}) <==> delete * from test db.test.remove({'age':20}) <==> delete test where age=20 db.test.remove({'age':{$lt:20}}) <==> elete test where age<20 db.test.remove({'age':{$lte:20}}) <==> delete test where age<=20 db.test.remove({'age':{$gt:20}}) <==> delete test where age>20 db.test.remove({'age':{$gte:20}}) <==> delete test where age>=20 db.test.remove({'age':{$ne:20}}) <==> delete test where age!=20 db.test.update({'name':'foobar'},{$set:{'age':36}}) <==> update test set age=36 where name='foobar' db.test.update({'name':'foobar'},{$inc:{'age':3}}) <==> update test set age=age+3 where name='foobar'
3. mongoDB java操作例子
- 建立普通java project,导入jar包:mongo-2.X.X.jar
- 代码如下,只试简单特性:
public class App { private static void showAll(DBCollection foo){ System.out.println("**** start showAll ****"); DBCursor cur = foo.find(); while(cur.hasNext()){ System.out.println(cur.next()); } } /** * @param args * @throws UnknownHostException */ public static void main(String[] args) throws UnknownHostException { // TODO Auto-generated method stub Mongo mg = new Mongo(); //数据库 for(String name:mg.getDatabaseNames()){ System.out.println(name); } DB db = mg.getDB("test"); //聚集集合 for(String name:db.getCollectionNames()){ System.out.println(name); } DBCollection foo = db.getCollection("foo"); showAll(foo); //插入数据 DBObject foo1 = new BasicDBObject(); foo1.put("id", "2013"); foo1.put("name", "sinny"); foo.save(foo1); showAll(foo); //删除数据 foo.remove(new BasicDBObject("name", "sinny")); showAll(foo); //修改数据 foo.update(new BasicDBObject("name","fredric"), new BasicDBObject("name","new fredric")); showAll(foo); } }
- 控制台打印结果如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)