zoukankan      html  css  js  c++  java
  • mongoDB常用

    登陆{
        本地的话直接mongo,如果是docker直接就这样docker exec -it 2d71a13e3128 mongo
        或者直接这样 mongo 127.0.0.1:27017
    }
    退出是 {
        exit
    }
    
    database级操作{
    	查看服务器上的数据库{
    		show dbs
    	}
    	切换数据库 {
    		use data
    	}
    	查看所有集合{
    		show collections
    	}
    	创建数据库 {
    		mongo中创建数据库采用的也是use命令,如果use后面跟的数据库名不存在,那么mongo将会新建该数据库。不过,实际上只执行use命令后,mongo是不会新建该数据库的,直到你像该数据库中插入了数据。use test2  
    		db.hello.insert({"name":"testdb"}) 该操作会在test2数据库中新建一个hello集合,并在其中插入一条记录
    	}
    	查询{
    		db.getCollection('数据集合').find({条件})
    		如果想格式化输出,可以直接后面追加.pretty()
    	}
    	删除当前数据库 { 
    		db.dropDatabase()   **/在主服务器上操作的时候要慎重
    	}
    	查看当前数据库{
    		db
    	}
    }
    
    
    collection级操作
    {
    	新建collection{
    		db.createCollection("Hello") [直接向一个不存在的Collection里写一条数据,会默认直接创建这个Collection]
    	}
    	删除collectio{
    		db.Hello.drop()
    	}
    	重命名{
    		db.hello2.renameCollection("HELLO")
    	} 
    	查看当前数据库中的所有collection{ 
    		show collections
    	}
    	建立索引在HELLO集合上,建立对ID字段的索引,1代表升序。{
    		db.HELLO.ensureIndex({ID:1})
    	}
    }
    
    Record级的操作
    {
    
    	插入{
    		向A集合中插入两条记录{
    			db.A.insert({'name':'Gal Gadot','gender':'female','age':28,'salary':11000})  
    			db.A.insert({'name':'Mikie Hara','gender':'female','age':26,'salary':7000}) 
                } 
    		同样也可以用save完成类似的插入操作 {
    			db.A.save({'name':'Wentworth Earl Miller','gender':'male','age':41, 'salary':33000})
    		}
    	}
    	查找{
    		查找A集合中的所有记录{
    			db.A.find()
    	}
    	Exact Equa:查找集合中的符合条件的记录{
    		单一条件:查询age为了28的数据.  db.A.find({'age':28})
    	}
    	Great Than:大于{
    		查询salary大于10000的数据 db.A.find({salary:{$gt:10000}}) 
    	}
    	Fuzzy Match:包含{
    		查询name中包含'l'的数据 db.A.find({name:/l/}) 
    		查询name以G打头的数据 db.A.find({name:/^G/})
    	}
    	查找条件是某个字段是否存在{
    		查找A集合中存在ID字段的{
    			db.A.find({ID:{$exists:true}})
    		}
    	}
    	多条件"与"{
    		查询age小于30,salary大于10000的数据
    		db.A.find({age:{$lt:30},salary:{$gt:10000}}) 
    	}
    	多条件“或”{
    		查询age小于30,或者salary大于10000的记录  
    		db.A.find({$or:[{salary:{$gt:10000}},{age:{$lt:30}}]}) 
    	}
    	查询第一条记录 findOne(){
    		返回上面的那个例子的第一条db.A.findOne({$or:[{salary:{$gt:10000}},{age:{$lt:30}}]}) 
    	}
    	查询记录的指定字段{
    		只显示name字段(没有name的只显示_id,有的同时显示_id和name) db.A.find({},{name:1})
    	}
    	查询指定字段的数据,并去重{
    		查询gender字段的数据,并去掉重复数据 db.A.distinct('gender')
    	}
    	对查询结果集的操作{
    		Pretty Print {
    			Mongo里面有两个格式化输出方法{
    				db.collection.pretty()
    				db.collection.forEach(printjson)
    		}
    		指定结果集显示的条目{
    		显示结果集中的前3条记录{
    			db.A.find().limit(3)
    		}
    		查询第2条以后的所有数据(跳过){
    			db.A.find().skip(2)
    		}
    		对结果集排序{
    			按照salary字段进行升序或者降序排序,如果没有salary字段的话,就默认为最小,比负数还小,就当他是无穷小。
    				db.A.find().sort({salary:1})
    				db.A.find().sort({salary:-1})
    		}
    		输出结果条数{
    			db.A.find().count()
    		}
    		删除数据{
    			删除集合里所有数据 db.A.remove({})
    			删除定义了y字段的数据 db.test.remove({y:{$exists:true}})
    			也可以只删除固定条数db.test.remove({x:{$exists:true}},1)
    			tip:
    				db.collection.remove是删除了集合中所有的记录,原有的索引等信息还在,而db.collection.drop()是把整个集合都删除掉(包括索引)
    		}
    	}
    	更新操作{
    		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.test.update({x:'x'},{$set:{x:'2'}},false,false) 把集合test中x='x'的中的x改成‘2’,如果没有找到就不该,并且如果找到多条,只改动第一条
    			db.test.update({x:'x'},{$set:{x:'2'}},false,true) 跟上面的区别是如果找到多条,那么全都改动。
    			db.test.update({x:'x'},{$set:{w:'2'}},true,true)  跟上一条的区别是,如果没查到x:'x'那么久单独创建一条记录,如果查到了x:'x'但是没有w这个字段,那么就创建这个字段。同时如果条件是不等式那样的条件,那么当创建新的记录的时候,不会出现条件字段。只会出现后面的设置的字段。比如
    			db.test.update({w:'x'},{$set:{q:'2'}},true,true) 如果不存在w这个字段,则是创建新的记录 {w:'x',q:'2'},而
    			db.test.update({w:{$lt:30}},{$set:{q:'2'}},true,true) 如果不存在w字段,那么创建新的一条数据{q:'2'}其中是没有w字段的。
    		}  
    	}
    }
    $gt:大于
    $lt:小于
    $gte:大于或等于
    $lte:小于或等于
    不等于 $ne
    这里还有一篇其他小伙伴整理的
    https://blog.csdn.net/AlbertFly/article/details/83001012
    
    mongodb中的insert和save的区别
    https://blog.csdn.net/qq_38603247/article/details/82633745

    官方文档

    https://docs.mongodb.com/manual/storage/

  • 相关阅读:
    [Redux] Extracting Container Components (FilterLink)
    [Regular Expressions] Introduction
    [Javascript] Web APIs: Persisting browser data with window.localStorage
    [Javascript] The JSON.stringify API
    [Redux] Extracting Presentational Components -- TodoApp
    [Redux] Extracting Presentational Components -- Todo, TodoList
    [Redux] Extracting Presentational Components -- Footer, FilterLink
    [Redux] Extracting Presentational Components -- AddTodo
    [Javascript] Task queue & Event loop.
    吸尘器:吸尘器
  • 原文地址:https://www.cnblogs.com/csnd/p/12061871.html
Copyright © 2011-2022 走看看