`

MongoDB 基础CRUD

    博客分类:
  • DB
阅读更多

备忘:

1、链接mongodb:
ServerAddress right = new ServerAddress("10.13.127.212", 18020);
ServerAddress left = new ServerAddress("10.13.127.211", 18020);
Mongo mongo = new Mongo(right, left);

DB db = mongo.getDB("test");
db.authenticate("test", "test".toCharArray());
2、插入:
BasicDBObject dbObject = new BasicDBObject();
dbObject.put("id", i);
dbObject.put("time", System.currentTimeMillis());

coll.insert(dbObject);
3、更新
coll.update(new BasicDBObject("_id", id),  getDBObjectByLabel(mongoLabel));
4、查询,查询条件的表达式文档
BasicDBObject dbObject = new BasicDBObject();
dbObject.put("id", 1);    //增加查询条件
BasicDBObject sortObject = new BasicDBObject(LabelConstant.ORDER_BY,LabelConstant.ORDER_DESC);

DBCursor dbCursor = coll.find(dbObject);  //不分页不排序
//cursor = coll.find(doc).skip((pageNo - 1) * pageSize).limit(pageSize).sort(sortObject);  //分页排序
DBObject result = dbCursor.next();  //取数据

 

 

1). insert()
db.collection.insert(x)  x就是要更新的对象,只能是单条记录,如:
[plain] 
db.collection.insert({_id:1,name:"test",count:1})  
当需要批量插入的时候,可以在shell中使用for循环,如:
[plain] 
for(var i=0;i<16;i++){   
     db.mytest.insert({_id:i,name:"test"+i,count:i})   
}  
此时如果用find()命令查询插入的数据,结果是这样的:
[plain] 
> db.mytest.find()  
{ "_id" : 0, "name" : "test0", "count" : 0 }
{ "_id" : 1, "name" : "test1", "count" : 1 }
{ "_id" : 2, "name" : "test2", "count" : 2 }
{ "_id" : 3, "name" : "test3", "count" : 3 }
{ "_id" : 4, "name" : "test4", "count" : 4 }
{ "_id" : 5, "name" : "test5", "count" : 5 }
{ "_id" : 6, "name" : "test6", "count" : 6 }
{ "_id" : 7, "name" : "test7", "count" : 7 }
{ "_id" : 8, "name" : "test8", "count" : 8 }
{ "_id" : 9, "name" : "test9", "count" : 9 }
{ "_id" : 10, "name" : "test10", "count" : 10 }
{ "_id" : 11, "name" : "test11", "count" : 11 }
{ "_id" : 12, "name" : "test12", "count" : 12 }
{ "_id" : 13, "name" : "test13", "count" : 13 }
{ "_id" : 14, "name" : "test14", "count" : 14 }
{ "_id" : 15, "name" : "test15", "count" : 15 }
 
2). update()
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,就把按条件查出来多条记录全部更新。
几个查询例子如下:
db.mytest.update({count:{$gt:1}},{$set:{name:"ok"}})                                  只更新第一条记录
db.mytest.update({count:{$gt:3}},{$set:{name:"ok"}},false,true)                  大于3的全部更新了
db.mytest.update({count:{$gt:4}},{$set:{name:"ok123"}},true,false)            只更新了一条
db.mytest.update({count:{$gt:6}},{$set:{name:"ok123"}},true,true)              大于6的全部更新了
 
3). save()
db.collection.save(x) x是要插入的对象,效果与上面的insert命令一样。save与insert的区别是这样的:
在进行插入数据的操作中,当遇到_id相同的情况下,save完成保存操作,insert则会保存;即_id相同情况下,save相当于更新操作。
 
下面是一些MongoDB的更新操作符
 
4). $inc
用法:{$inc:{field:value}}   意思是对一个数字字段field增加value:
[plain] 
> db.mytest.find({_id:1})       
{ "_id" : 1, "name" : "test1", "count" : 1 }  
> db.mytest.update({_id:1},{$inc:{count:1}})  
> db.mytest.find({_id:1})  
{ "_id" : 1, "name" : "test1", "count" : 2 }  //count字段加1  
 
value的值也可以为负,就相当于减一个值:
[plain] 
> db.mytest.update({_id:1},{$inc:{count:-2}})  
> db.mytest.find({_id:1})  
{ "_id" : 1, "name" : "test1", "count" : 0 }  //值从2减到0  
 
5). $set命令
用法:{$set:{field:value}}
相当于在关系型数据库中sql的set field=value,全部数据类型都支持$set操作
[plain] 
> db.mytest.update({_id:1},{$set:{count:111}})  
> db.mytest.find({_id:1})  
{ "_id" : 1, "name" : "test1", "count" : 111 }   //修改数值型  
> db.mytest.update({_id:1},{$set:{name:"MongoDB"}})  
> db.mytest.find({_id:1})  
{ "_id" : 1, "count" : 111, "name" : "MongoDB" }   //修改字符型  
 
6). $unset
用法:{$unset:{field:1}}
[plain] 
> db.mytest.find({_id:1})  
{ "_id" : 1, "count" : 111, "name" : "MongoDB" }  
> db.mytest.update({_id:1},{$unset:{name:1}})  
> db.mytest.find({_id:1})  
{ "_id" : 1, "count" : 111 }  //删除了字段name  
 
7). $push
用法:{$push:{field:value}}
把value追加到field中取,field一定是数据类型才行,如果field不存在,会新增一个数组类型加进去:
[plain] 
> db.mytest.update({_id:15},{$set:{array:["aaa","bbb"]}})  
> db.mytest.find({_id:15})  
{ "_id" : 15, "array" : [  "aaa",  "bbb" ], "count" : 15, "name" : "ok123" }  
使用push追加数据:
[plain] 
> db.mytest.update({_id:15},{$push:{array:"ccc"}})  
> db.mytest.find({_id:15})  
{ "_id" : 15, "array" : [  "aaa",  "bbb",  "ccc" ], "count" : 15, "name" : "ok123" }  
push一次只能追加一个值,如果需要追加多个值,则需要使用$pushAll:
[plain] 
> db.mytest.update({_id:15},{$pushAll:{array:["ddd","eee","fff"]}})  
> db.mytest.find({_id:15})  
{ "_id" : 15, "array" : [  "aaa",  "bbb",  "ccc",  "ddd",  "eee",  "fff" ], "count" : 15, "name" : "ok123" }  
 
8). $addToSet
用法:{$addToSet:{field:value}}
增加一个值到数组内,而且只有当这个值不在数组内才增加:
[plain] 
> db.mytest.update({_id:15},{$addToSet:{array:"123"}})  
> db.mytest.find({_id:15})  
{ "_id" : 15, "array" : [  "aaa",  "bbb",  "123" ], "array2" : [  "mmm",  "nnn"], "count" : 15, "name" : "ok123" }  
> db.mytest.update({_id:15},{$addToSet:{array:"aaa"}})  
> db.mytest.find({_id:15})  
{ "_id" : 15, "array" : [  "aaa",  "bbb",  "123" ], "array2" : [  "mmm",  "nnn"], "count" : 15, "name" : "ok123" }  
 
9). $pop
删除数组内的一个值,删除最后一个值:{$pop:{field:1}} ,删除第一个值:{$pop:{field:-1}}
[plain] 
> db.mytest.find({_id:15})  
{ "_id" : 15, "array" : [  "aaa",  "bbb",  "123" ], "array2" : [  "mmm",  "nnn"], "count" : 15, "name" : "ok123" }  
> db.mytest.update({_id:15},{$pop:{array:1}})  
> db.mytest.find({_id:15})  
{ "_id" : 15, "array" : [  "aaa",  "bbb" ], "array2" : [  "mmm",  "nnn" ], "count" : 15, "name" : "ok123" }  
 
10). $pull
用法:$pull:{field:value}   从数组中删除一个等于value的值:
[plain] 
> db.mytest.find({_id:15})  
{ "_id" : 15, "array" : [  "aaa",  "bbb" ], "array2" : [  "mmm",  "nnn" ], "coun  
t" : 15, "name" : "ok123" }  
> db.mytest.update({_id:15},{$pull:{array:"aaa"}})  
> db.mytest.find({_id:15})  
{ "_id" : 15, "array" : [  "bbb" ], "array2" : [  "mmm",  "nnn" ], "count" : 15,  
 "name" : "ok123" }  
 
11). $pullAll
用法同$pull,可以一次删除数组内的多个值:
[plain] 
> db.mytest.find({_id:15})  
{ "_id" : 15, "array" : [  "bbb" ], "array2" : [  "mmm",  "nnn" ], "count" : 15,"name" : "ok123" }  
> db.mytest.update({_id:15},{$pullAll:{array2:["mmm","nnn"]}})  
> db.mytest.find({_id:15})  
{ "_id" : 15, "array" : [  "bbb" ], "array2" : [ ], "count" : 15, "name" : "ok123" }  
 
12). $
可以理解为数组定位器,看一个官方文档的例子:
[plain] 
> t.find()  
{ "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC", "comments" : [ { "by" : "joe", "votes" : 3 }, { "by" : "jane", "votes" : 7 } ] }  
> t.update( {'comments.by':'joe'}, {$inc:{'comments.$.votes':1}})  
> t.find()  
{ "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC", "comments" : [ { "by" : "joe", "votes" : 4 }, { "by" : "jane", "votes" : 7 } ] }  
需要注意的是,$只会找到第一条数组项,后面的就不管了:
[plain] 
> db.mytest.find({_id:16})  
{ "_id" : 16, "x" : [  1,  2,  3,  1 ] }  
> db.mytest.update({x:1},{$inc:{"x.$":1}})  
> db.mytest.find({_id:16})  
{ "_id" : 16, "x" : [  2,  2,  3,  1 ] }  
 
还有一点需要注意,当$配合$unset使用的时候,会留下一个null的数组项,这个问题可以使用{$pull:{x:null}}解决:
[plain] 
> db.mytest.find({_id:16})  
{ "_id" : 16, "x" : [  2,  2,  3,  1 ] }  
> db.mytest.update({x:3},{$unset:{"x.$":1}})  
> db.mytest.find({_id:16})  
{ "_id" : 16, "x" : [  2,  2,  null,  1 ] }  
> db.mytest.update({_id:16},{$pull:{x:null}})  
> db.mytest.find({_id:16})  
{ "_id" : 16, "x" : [  2,  2,  1 ] } 
 
 

 

基础配置:http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/#inserting-a-document

用户管理:http://docs.mongodb.org/manual/tutorial/add-user-administrator/

分享到:
评论

相关推荐

    Springboot整合MongoDB进行CRUD操作的两种方式(实例代码详解)

    Springboot整合MongoDB进行CRUD操作的两种方式 在分布式和微服务架构中,Springboot和MongoDB是非常流行的技术栈。 Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库。两者在实际应用中使用...

    java操作mongoDB(CRUD)

    Java操作MongoDB主要涉及到的是Java驱动程序与MongoDB数据库之间的交互,这涵盖了创建连接、执行CRUD(创建、读取、更新、删除)操作等一系列基本的数据库管理任务。MongoDB是一个流行的NoSQL数据库,以其灵活性、高...

    Java操作MongoDB之CRUD(增删改查)

    这篇博文“Java操作MongoDB之CRUD(增删改查)”主要探讨了如何使用Java驱动程序来执行基本的数据库操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete)。 首先,我们来了解MongoDB的Java驱动...

    NoSQL之MongoDB的CRUD操作

    NoSQL之MongoDB的CRUD操作 比较全面的MongoDB操作,支持面向对象. 详情http://blog.csdn.net/dengwanchuan/article/details/7514431

    mongodb-crud:这用于通过MongoDB在Node.js中进行CRUD操作

    节点mongodb-crud 这用于通过MongoDB在Node.js中进行CRUD操作。 安装 npm install node-mongodb-crud 用法 这用于通过MongoDB在Node.js中建立连接并生成CRUD操作(查找,插入,更新,删除)。 #index.js var ...

    mongodb之CRUD小demo

    Spring Data MongoDB使得这些操作变得非常直观,因为它抽象了与MongoDB的低级别交互,使我们能够专注于业务逻辑而不是基础设施代码。 在实际项目中,我们需要配置MongoDB连接。在Spring Boot应用中,这通常通过在`...

    MongoDB-CRUD-Csharp:C#中的MongoDB基本CRUD操作

    MongoDB-CRUD-Csharp C#中的MongoDB基本CRUD操作 这三个C#文件包含用于运行非常基本的UI并允许对名为“ courses”的MongoDB集合进行CRUD操作的代码。在此示例中,数据库结构保持简单,但可以扩展以允许在不同的...

    mongoDB_CRUD学习资料

    MongoDB 是一个流行的开源...综上所述,MongoDB的CRUD操作涵盖了数据库管理的基础,而`dump`文件则涉及数据的备份与恢复。通过Wangs0622博客的学习,你将能够更全面地掌握MongoDB的使用,并在实际项目中应用这些知识。

    Go-golangmgo代码自动生成器生成对mongodb的CRUD操作代码

    总的来说,Go-golang mgo代码自动生成器是提升开发效率的利器,它通过自动化生成CRUD操作代码,使开发者能更专注于业务逻辑而不是基础的数据库操作。在实际开发中,结合mgo驱动的强大功能,可以构建出稳定、高效的Go...

    nodejs-mongodb-crud:Node.js-Express-MongoDB CRUD示例应用程序

    Node.js-Express-MongoDB CRUD示例应用程序 这是一个使用MongoDB的简单Node.js CRUD应用程序。 它基于 ,具有以下功能: 包括Wercker配置 应用程序更改以在Oracle Container Cloud Service上运行 怎么跑 npm ...

    mongoDB中CRUD的深入讲解

    今天开始接触非关系型数据库的mongoDB,现在将自己做的笔记发出来,供大家参考,也便于自己以后忘记了可以查看。 首先,mongoDB,是一种数据库,但是又区别与mysql,sqlserver、orcle等关系数据库,在优势上面也...

    在MVC架构中使用Node.js设计了一个支持MongoDB的CRUD API.zip

    在MVC(Model-View-Controller)架构中使用Node.js设计一个支持MongoDB的CRUD API,是一项将前端与后端紧密结合的任务。这个项目的核心目标是实现数据的创建(Create)、读取(Read)、更新(Update)和删除(Delete...

    expressjs-mongodb-crud:完整的Express.js + Node.js + MongoDB CRUD和REST骨架

    **Express.js + Node.js + MongoDB CRUD和REST骨架详解** 在Web开发中,Express.js是Node.js平台上最流行的框架,用于构建高效、可扩展的网络应用。MongoDB则是一种非关系型数据库,以其灵活性和高性能而受到青睐。...

    php-mongodb-crud:一个简单的 MongoDB 和 PHP CRUD 应用程序

    **PHP与MongoDB CRUD操作详解** 在Web开发中,数据管理是至关重要的,而PHP作为常用的后端语言,经常需要与数据库进行交互。MongoDB是一个流行的NoSQL数据库系统,以其灵活性、可扩展性和高性能受到开发者青睐。本...

    CRUD:使用 Node、Express 和 MongoDB 完成 CRUD 应用程序

    使用 Node、Express 和 MongoDB 完成 CRUD 应用程序 运行这个项目克隆它并使用安装模块 npm install 然后创建 config.env 文件并创建 PORT 和 MONGO_URI 变量并指定值。 就是这样。 你准备好了。 要执行此项目,只...

    node-express-mongodb-crud-app:节点Express mongodb crud api

    节点Express mongodb crud应用程序api 安装 $ git clone https://github.com/shubhamns/node-express-mongodb-crud-app.git $ cd PROJECT_TITLE $ npm install 配置应用 第1步使用localhost 1. install MongoDB `...

    AngularMongoDBCRUD:该项目Angular8&MongoDb&CRUD

    Angular8 + MongoDB + CRUD 该项目是使用版本8.0.1生成的。开发服务器为开发服务器运行ng serve 。 导航到http://localhost:4200/ 。 如果您更改任何源文件,该应用程序将自动重新加载。代码脚手架运行ng generate ...

    MongoDB CRUD技术介绍.pptx

    本介绍将深入探讨MongoDB的CRUD(创建、读取、更新、删除)操作,以及它与传统的关系型数据库(RDBMS)之间的区别。 首先,MongoDB的数据模型与RDBMS大相径庭。在MongoDB中,数据以文档的形式存储,这些文档是基于...

    Angular_Node_Express_MongoDB_CRUD:CRUD

    在“Angular_Node_Express_MongoDB_CRUD”项目中,开发者将实现CRUD(Create、Read、Update、Delete)操作,这是任何数据管理应用的基础功能: - **创建(Create)**:用户可以通过前端Angular应用提交表单,数据被...

Global site tag (gtag.js) - Google Analytics