1、下载zip包解压,进入命令行
2、show dbs 查看相关数据库,
3、db.createCollection("maketubu", {capped:true, size:100000,autoIndexId:true,max:2000}) 创建集合
capped:(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档
size:集合的最大容量,单位为字节
autoIndexId:是否为ObjectId自动创建索引,默认为false
max:集合所能包括的最大的文档的数量。插入数据。优先检查size,再检查max的值
4、db.collectionname.drop() 删除集合 删除成功则返回true
5、向集合中插入数据 db.collentionname.insert(document(bson格式的数据))
也可以一次性插入多个数据db.collentionname.insertMany([document1,document2])
6、更新数据
db.collection.update( <query>, 查询条件,类似于sql中的where子句 <update>, 更新字段,类似于sql中的set子句 { upsert: <boolean>, 如果没有匹配到数据 fasle 不做处理,true 插入该数据 默认false multi: <boolean>, 对于匹配到的数据,false只更新查询到的第一条,true 更新所有 默认false writeConcern: <document> 抛出异常的级别 } )db.make.update({'title':'我是马克'},{$set:{'title':'我是大帅哥'}}) update({key:value},$set:{{key:value}})
7、删除文档 db.collection.remove({key:value}) 只想删除一条数据 db.collection.remove({key:value},1) 删除所有数据
db.collection.remove() 类似于truncate
8、查询数据
db.make.find({'title':'我是大帅哥'}).pretty() 后面加上pretty()会对查询结果进行格式化,看起来好看一点 { "_id" : ObjectId("5bcdcdf6ae1b65752c8bf450"), "title" : "我是大帅哥", "description" : "MongoDB 是我学习的第三个数据库", "by" : "马克图布", "url" : "http://www.maketubu.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 } { "_id" : ObjectId("5bcdcefaae1b65752c8bf451"), "title" : "我是大帅哥", "description" : "MongoDB 是我学习的第三个数据库", "by" : "马克图布", "url" : "http://www.maketubu.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 998 }
9、gt => > lt => < gte => >= lte => <= ne => != 大于小于 大于等于 小于等于 不等于
db.col.find({key1:value1, key2:value2}).pretty() and 条件查询 db.col.find({$or:[{"key":"value"},{"key": "value"}]}).pretty() or条件查询 db.col.find({"key": {$gt:int_value}, $or: [{"key": "value"},{"key": "value"}]}).pretty() and 和 or 联合查询
10、对返回字段做控制
db.make.find({'likes':{$gt:110},$or:[{'by':'马克图布'},{'by':'马克图布'}]}).pretty() 原查询 and和or的联合查询 { "_id" : ObjectId("5bcdcefaae1b65752c8bf451"), "title" : "我是大帅哥", "description" : "MongoDB 是我学习的第三个数据库", "by" : "马克图布", "url" : "http://www.maketubu.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 998 }
db.make.find({'likes':{$gt:110},$or:[{'by':'马克图布'},{'by':'马克图布'}]},{title:1,by:1}).pretty() 都为1 则返回选择的字段 { "_id" : ObjectId("5bcdcefaae1b65752c8bf451"), "title" : "我是大帅哥", "by" : "马克图布" }
db.make.find({'likes':{$gt:110},$or:[{'by':'马克图布'},{'by':'马克图布'}]},{title:0,by:0}).pretty() 都为0, 则返回未选择的字段 { "_id" : ObjectId("5bcdcefaae1b65752c8bf451"), "description" : "MongoDB 是我学习的第三个数据库", "url" : "http://www.maketubu.com", '}]},{title "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 998 }
11、操作运算符
db.make.find({likes:{$lt:200,$gt:100}}).pretty() 大于100 and 小于200
db.col.find({title:/教/}) 查询title中包含 ‘教’的document db.col.find({title:/^教/}) 查询title中以 ‘教’ 开头的document db.col.find({title:/教$/}) 查询title中以 ‘教’的结尾document12、mongodb 的数据类型
类型数字备注Double1 String2 Object3 Array4 Binary data5 Undefined6已废弃。Object id7 Boolean8 Date9 Null10 Regular Expression11 JavaScript13 Symbol14 JavaScript (with scope)15 32-bit integer16 Timestamp17 64-bit integer18 Min key255Query with -1.Max key127根据字段类型来查询数据
db.make.find({title:{$type:1}}) title类型为double的document
db.make.find({title:{$type:2}}) title类型为string的document
13、limit skip的使用
db.make.find({},{'title':1,_id:0}).skip(3) 跳过前三个结果
db.make.find({},{'title':1,_id:0}).limit(3) 选择前三个结果
14、查询结果的排序
db.make.find({}).sort({likes:-1}) 查询make集合下的所有document,按照likes进行排序,-1为降序,1为升序
当这三个一起使用时的默认执行条件为 sort() -> skip() -> limit()
15、创建某个,或多个字段的索引
db.make.createIndex({title:1},{option:true,false}),前面为建索引的字段,后面为可选参数列表
ParameterTypeDescriptionbackgroundBoolean建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false。uniqueBoolean建立的索引是否唯一。指定为true创建唯一索引。默认值为false.namestring索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。sparseBoolean对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.expireAfterSecondsinteger指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。vindex version索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。weightsdocument索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。default_languagestring对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语language_overridestring对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.16、mongodb的聚合函数
db.make.aggregate([{$group:{_id:'$by_user',num:{$sum:1}}}]) 对集合make进行聚合,
[{$group:{_id:'$key',num:{$sum:1}}}] $group 聚合 _id:'$key' key聚合的字段, num:{$sum:1} 对聚合字段的结果求和
表达式描述实例$sum计算总和。db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])$avg计算平均值db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])$min获取集合中所有文档对应值得最小值。db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])$max获取集合中所有文档对应值得最大值。db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])$push在结果文档中插入值到一个数组中。db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])$addToSet在结果文档中插入值到一个数组中,但不创建副本。db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])$first根据资源文档的排序获取第一个文档数据。db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])$last根据资源文档的排序获取最后一个文档数据db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])17、管道的操作,在聚合的结果管道中,对结果进行相关处理,在进行结果返回
$project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。$match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。$limit:用来限制MongoDB聚合管道返回的文档数。$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。$group:将集合中的文档分组,可用于统计结果。$sort:将输入文档排序后输出。$geoNear:输出接近某一地理位置的有序文档。示例:
db.make.aggregate( 对聚合管道做一个结构的改变,选择输出的字段 $project { $project : { _id : 0 , title : 1 , author : 1 }})
db.make.aggregate([ 匹配分数大于 70 小于等于 90的数据,然后分组输出 {$match:{score:{ $gt:70,$lte:90}}}, {$group:{_id:null,count:{$sum:1}} ]) db.make.aggregate( 跳过前5个结果 { $skip : 5 });18、java-mongodb 示例代码
import com.mongodb.MongoClient; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; import org.bson.BsonDocument; import org.bson.Document; import org.bson.codecs.configuration.CodecRegistry; import org.bson.conversions.Bson; import java.util.ArrayList; import java.util.List; import java.util.logging.Filter; public class mongodbApp01 { public static void main( String args[] ){ try{ // 连接到 mongodb 服务 MongoClient mongoClient = new MongoClient( "localhost" , 27017 ); // 连接到数据库 MongoDatabase mongoDatabase = mongoClient.getDatabase("make"); System.out.println("Connect to database successfully"); // mongoDatabase.createCollection("pangu"); // System.out.println("集合创建成功"); MongoCollection<Document> coll = mongoDatabase.getCollection("pangu"); Document document = new Document("title", "MongoDB"). append("description", "database"). append("likes", 999). append("by", "Fly"); List<Document> documents = new ArrayList<Document>(); documents.add(document); coll.deleteMany(Filters.eq("likes",777)); coll.insertMany(documents); System.out.println("文档插入成功"); //返回一个迭代器 数据查询 FindIterable<Document> findIterable = coll.find(); MongoCursor<Document> mongoCursor = findIterable.iterator(); while(mongoCursor.hasNext()){ System.out.println(mongoCursor.next().entrySet()); } //数据更新 coll.updateMany(Filters.eq("likes", 999), new Document("$set",new Document("likes",777))); FindIterable<Document> findIterable2 = coll.find(); MongoCursor<Document> mongoCursor2 = findIterable2.iterator(); System.out.println("数据更新成功"); while(mongoCursor2.hasNext()){ System.out.println(mongoCursor2.next()); } }catch(Exception e){ System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } } public void user_login_mongodb(){ try { //连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址 //ServerAddress()两个参数分别为 服务器地址 和 端口 ServerAddress serverAddress = new ServerAddress("localhost",27017); List<ServerAddress> addrs = new ArrayList<ServerAddress>(); addrs.add(serverAddress); //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码 MongoCredential credential = MongoCredential.createScramSha1Credential("username", "make", "password".toCharArray()); List<MongoCredential> credentials = new ArrayList<MongoCredential>(); credentials.add(credential); //通过连接认证获取MongoDB连接 MongoClient mongoClient = new MongoClient(addrs,credentials); //连接到数据库 MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName"); System.out.println("Connect to database successfully"); } catch (Exception e) { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } } }