MongoDB初期学习
一.数据库
1.删除 db.dropDatabase()
2.创建/使用: use dbName(数据库名)
3.展示所有数据库: show dbs
二.集合
1.创建集合:db.createCollection(name, options)
注:options:1.capped:固定集合,如果为true,size必选 2.autoIndexId:自动创建索引,3.2版本不支持 3.size:固定集合最大值 4.max:包含文档的最大数量
例如:db.createCollection("test1",{capped:true,autoIndexId:true,size:10000,max:100})
2.展示集合: show collections
3.删除集合:db.集合名.drop()
三.插入文档
1.save():如果 _id 主键存在则更新数据;该方法新版本中已废弃;
db.COLLECTION_NAME.insert(document)
2.insert():若插入的数据主键已经存在,抛异常
db.COLLECTION_NAME.save(document)
3.insertOne() 用于向集合插入一个新文档
db.collection.insertOne()
4.db.collection.insertMany() 用于向集合插入一个多个文档
5.replaceOne()
db.collection.replaceOne()
四:更新文档
1.db.collection.update( <query>,<update>,{ upsert: <boolean>, multi: <boolean>, writeConcern: <document>})
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
例如:db.col.update({'_id':ObjectId('61ceb9a0eb7e0000c90045e6')},{$set:{'title':'MongoDB'}},{upsert:true,multi:true})
五:删除文档
1.remove
db.collection.remove(<query>,{justOne: <boolean>,writeConcern: <document>})
说明: query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
writeConcern :(可选)抛出异常的级别。
例如: db.col.remove({'_id':ObjectId('61cebb24e353ea420f778669') },{justOne: 1})
2.deleteOne() 和 deleteMany()
例如: db.col.deleteMany({'_id':ObjectId('61ceb9a0eb7e0000c90045e6') },{justOne: 1})
六: 查询文档
1.db.collection.find(query, projection).pretty()
说明: query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
pretty():以易读的方式来读取数据,可不用
2.操作符
等于: db.col.find({"by":"***"})
小于: db.col.find({"by":{$lt:50})
小于等于: db.col.find({"by":{$lte:50})
大于: db.col.find({"by":{$gt:50})
大于等于: db.col.find({"by":{$gte:50})
不等于: db.col.find({"by":{$ne:50})
and: db.col.find({"by":"*","by":"**","by":"***"})
or: db.col.find({$or:[{key1: value1}, {key2:value2}]})
3.Limit()方法
db.COLLECTION_NAME.find().limit(NUMBER)
4.Skip()跳过指定数量查询记录数
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
5.排序sort() 方法
db.COLLECTION_NAME.find().sort({KEY:1/-1});其中,1 为升序排列,而-1 是用于降序排列。
6.创建索引createIndex()
语法:db.collection.createIndex(keys, options)
查询索引:db.col.getIndexes()
查看集合索引大小:db.col.totalIndexSize()
删除集合所有索引:db.col.dropIndexes()
删除集合指定索引:db.col.dropIndex("索引名称")
7.聚合
语法:db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
$sum 计算总和。 db.col.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg 计算平均值 db.col.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min 获取集合中所有文档对应值得最小值。 db.col.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max 获取集合中所有文档对应值得最大值。 db.col.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
$push 将值加入一个数组中,不会判断是否有重复的值。 db.col.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
$addToSet 将值加入一个数组中,会判断是否有重复的值,若相同的值在数组中已经存在了,则不加入。 db.col.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
$first 根据资源文档的排序获取第一个文档数据。 db.col.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last 根据资源文档的排序获取最后一个文档数据 db.col.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])