//库:
show dbs //显示所有库 db //当前库 use 库名 //自动创建新库 db.dropDatabase() //删除库 show tables(collections) //显示当前数据库的(表/集合)//表/集合:
db.createCollection("表名",{ capped : true, autoIndexId : true, size : 6142800, max : 10000 }) //创建固定集合 db.表名.drop() //删除表 db.表名.isCapped() //是否为固定集合 db.runCommand({"convertToCapped":"表名",size:1000}) //转换为固定集合//行/文档
//增 db.表名.insert({a:1,b:"asdf"}) //自动创建表插入(行/文档) save({a:1,b:"asdf"}) insertOne({a:1,b:"asdf"}) insertMany([{"b": 3}, {'c': 4}])varname=({a:1,b:"asdf"})
db.表名.insert(varname) //使用变量//改
db.表名.find() //获取表数据 db.tabletest.update({'a':1},{$set:{'a':100}},{multi:true}) //修改a:1的行为a:100,multi:true表示所有的,否则值修改第一个 db.tabletest.update({'a':1},{$set:{'a':100}},false//0,true//1) //false表示upsert,是否添加进集合中 db.tabletest.save() //用于替换集合中的文档,要带有_iddb.表名.remove({"a":1},true//1) //删除集合中的文档(一个)
db.表名.remove({}) //删除表中所有文档 db.repairDatabase() //remove() 方法 并不会真正释放空间,需要来回收磁盘空间//删
//推荐使用 deleteOne() 和 deleteMany() 方法 db.表名.deleteMany({}) db.表名.deleteMany({ status : "A" }) db.表名.deleteOne( { status: "D" } )//查
db.表名.find({"a":"1"}).pretty() db.表名.find({"a":{$lt:5}}).pretty() //< db.表名.find({"a":{$lte:5}}).pretty() //<= db.表名.find({"a":{$gt:5}}).pretty() //> db.表名.find({"a":{$gte:5}}).pretty() //>= db.表名.find({"a":{$ne:5}}).pretty() //!=db.表名.find({"a":2,"b":2}).pretty() //and
db.表名.find({$or:[{"a":2},{"a":3}]}).pretty() //or db.表名.find({title:/教/}) //包含"教" db.表名.find({title:/^教/}) //以"教"字开头 db.表名.find({title:/教$/}) //以"教"字结尾 db.表名.find({"title" : {$type : 'string'//2}}) //集合中 title 为 String 的数据 db.表名.find({"a":"1"}).limit(2) //限制条数 skip(2) //跳过两条 //对于分页pageIndex、pageSize db.表名.find({"a":"1"}).skip((pageIndex-1)*pageSize)).limit(pageSize)db.表名.find().sort({"a":-1}) //按字段为a进行排序,-1递减顺序desc,1递增顺序asc
//索引 db.表名.createIndex({open: 1, close: 1}, {background: true}) //索引,background后台执行,不会阻塞数据操作;unique唯一索引;name索引名称db.表名.getIndexes() //查看集合索引
db.表名.totalIndexSize() //查看集合索引大小 db.表名.dropIndexes() //删除集合所有索引 db.表名.dropIndex("a_1") //删除集合指定索引db.表名.ensureIndex({"数组的字段名":1}) //给数组创建索引
db.表名.find({****}).explain() //索引使用情况db.表名.ensureIndex({字段名:"text"}) //建立全文索引,对每一个词建立一个索引
db.表名.find({$text:{$search:"索引内容"}}) //使用全文索引//聚合函数
db.表名.aggregate([{$group:{_id:"$字段a",数量:{$sum:"$字段b"}}}]) //按字段a分组,计算分组里字段b的总和 //$avg $min $max//管道
db.tabletest.aggregate([ {$project:{ //修改输入文档结构 _id:0, //不包含_id,默认为包含 a:1, b:1 }}, {$match:{ a:{$gt:2} //过滤数据 }}, {$project:{ //修改结构为只有a字段 a:1 }} ]) //$limit:用来限制MongoDB聚合管道返回的文档数。 //$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。 //$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。 //$group:将集合中的文档分组,可用于统计结果。 //$sort:将输入文档排序后输出。 //$geoNear:输出接近某一地理位置的有序文档db.tabletest.intsert({a:4,b:4,info:{
"$ref":"tableref", "$id": ObjectId("5c21cb8bfca61b72275992bf"), "$db":"test"} })//正则表达式
db.posts.find({字段名:{$regex:"runoob.*?",$options:"$i"}}) //$options:"$i"不区分大小写//使用函数的方法,实现id自动递增
db.createCollection("counters") //创建记录计数集合 db.counters({"_id":"tabletest","sequence_value": 0}) //初始化需要自动递增的集合function getNextSequenceValue(sequenceName){ //计数处理函数
var sequenceDocument = db.counters.findAndModify( { query:{_id: sequenceName }, update: {$inc:{sequence_value:1}}, "new":true }); return sequenceDocument.sequence_value; }db.tabletest.insert({ //实现自动计数
"_id":getNextSequenceValue("tabletest"), "a":6, "b":6})