MongoDB基础知识简介是一种文档导向数据库管理系统,是基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。其旨在为web应用提供可扩展的高性能数据库存储解决方案,将数据存储为一个文档,数据结构由键值对组成,类似于JSON对象,字段值可以包含其他文档,数组及文档数组语法(是指使用MongoDB时)MongoDB会自动创建数据库和集合,所以使用前我们不需要手动去创建。Usedb_name:一旦db_name里有数据,该数据看才会被showdbs显示Db.collection_name.insert({…}|[{…},…,{…}]):会自动创建集合collection_name,并向里面添加数据,没有{…}会报错:noobjectpassedtoinsert!Db.collection_name.remove({…}|{条件}):删除集合中所有的数据,但是集合还在,索引还在,没有{…}会报错:removeneedsaqueryDb.collection_name.drop():删除集合、索引Db.collection_name.find(空|条件):空时,查询所有记录,有条件时,查询满足当前条件的记录Db.collection_name.update(query,update,upset:boolean,multi:boolean):query(要修改哪些的查询条件,类似于SQL的where);update(要修改的字段对应的值);upsert(可选的,默认值false。如根据查询条件没有找到文档,如果是true,相当于执行insert,如果是false,不做任何操作);multi(可选,默认值false。如根据查询找到多条对应的记录,如果是false,只修改第一条记录,如果是true,全部更新)关键字$or、$and查询$and:db.collection_name.find({$and:[{},{}]}|{条件1,条件2}):将多个条件联系起来查询文档$or:db.collection_name.find({$or:[{},{}]}):根据查询条件找出符合其中一个条件的记录$or、$and联合查询:db.collection_name.find({$and:[{1},{$or:[{2},…,{3}]}]}):等于符合条件1并且要满足条件2或者条件3其中一个关键字$in、$nin包含($in)查询:db.collection_name.find({字段:{$in:[‘值1’,’值2’]}}):查询指定字段值为值1或者值2条件的文档,跟$or类似,但是后者可以查询不同字段,而前者只针对一个字段不包含($nin)查询:与包含($in)查询相反不等于($not)查询:db.collection_name.find({字段:{$not:{表达式1}}}):该操作符不能独立使用,必须跟其他操作条件一起使用(除$regex),例如,db.users.find(“id”:{$not:{$gt:”002”}})表示查找id不大于等于002的文档数据关键字$exists用来判断一个字段是否存在:db.collection_name.find({字段:{$exists:false|true}})如果true的话,没有这个字段,什么都不返回;如果有的话,返回符合存在的记录关键字nullNull查找元素不存在和元素对应的值为null的文档语法:db.collection_name.find({字段:null})查找元素存在并且值等于null语法:db.collection_name.find({字段:{$in:[null],$exists:true}})关键字$type来匹配一个元素的类型查询语法:db.collection_name.find({字段:{$type:类型值}})类型类型值Double1String2Object3Array4Binarydata5Undefined6….….条件操作符描述:用来比较两个表达式并从集合中获取数据条件操作符:大于($gt)、小于($lt)、大于等于($gte)、小于等于($lte)插入实例varMongoClient=require('mongodb').MongoClient;varDB_CONN_STR='mongodb://localhost:27017/runoob';varinsertData=function(db,callback){//连接到表sitevarcollection=db.collection('site');//插入数据vardata=[{name:小明,url:},{name:小红,url:c.runoob.com}];collection.insert(data,function(err,result){if(err){console.log('Error:'+err);return;}callback(result);});}MongoClient.connect(DB_CONN_STR,function(err,db){console.log(连接成功!);insertData(db,function(result){console.log(result);db.close();});});•MongoDB会自动创建数据库和集合,所以使用前我们不需要手动去创建。•以下实例我们连接数据库runoob的site表,并插入两条数据:查询实例varMongoClient=require('mongodb').MongoClient;varDB_CONN_STR='mongodb://localhost:27017/runoob';varselectData=function(db,callback){//连接到表varcollection=db.collection('site');//查询数据varwhereStr={name:'菜鸟教程'};collection.find(whereStr).toArray(function(err,result){if(err){console.log('Error:'+err);return;}callback(result);});}MongoClient.connect(DB_CONN_STR,function(err,db){console.log(连接成功!);selectData(db,function(result){console.log(result);db.close();});});更新实例varMongoClient=require('mongodb').MongoClient;varDB_CONN_STR='mongodb://localhost:27017/runoob';varupdateData=function(db,callback){//连接到表varcollection=db.collection('site');//更新数据varwhereStr={name:'菜鸟教程'};varupdateStr={$set:{url:}};collection.update(whereStr,updateStr,function(err,result){if(err){console.log('Error:'+err);return;}callback(result);});}MongoClient.connect(DB_CONN_STR,function(err,db){console.log(连接成功!);updateData(db,function(result){console.log(result);db.close();});});删除实例varMongoClient=require('mongodb').MongoClient;varDB_CONN_STR='mongodb://localhost:27017/runoob';vardelData=function(db,callback){//连接到表varcollection=db.collection('site');//删除数据varwhereStr={name:'菜鸟工具'};collection.remove(whereStr,function(err,result){if(err){console.log('Error:'+err);return;}callback(result);});}MongoClient.connect(DB_CONN_STR,function(err,db){console.log(连接成功!);delData(db,function(result){console.log(result);db.close();});});方法Limit在MongoDB中读取指定数量的数据记录,使用limit(number)方法,接受一个参数number,该参数指定从MongoDB中读取的记录条数语法:db.collection_name.find.limit(number)实例:db.col.find({},{‘title’:1,_id:0}).limit(2)第一个{}放条件,为空时返回所有集合中的所有文档第二个{}指定哪些列显示,哪些列不显示(0表示不显示,1表示显示)方法skip方法通过该方法可以跳过指定数量的数据,同样接受一个参数作为记录条数语法:db.collection_name.find().skip(number),参数默认为0实例:db.col.find({},{‘title’:1,_id:0}).limit(1).skip(1)先执行skip后执行limit方法sort对MongoDB中集合的数据进行排序,可以通过参数指定排序的字段,并使用1和-1来指定排序的方式,其中1是升序,-1是降序语法:db.collection_name.find().sort({字段:1})实例:db.col.find({},{‘title’:1,_id:0}).sort({‘likes’:-1})索引索引是一个特殊的数据结构,存储在一个易于便利读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构语法:db.collection_name.ensureIndex({字段:1,…})其中,字段为要创建的索引字段,1为指定升序创建索引,-1降序实例:db.col.ensureIndex({‘title’:1})注意可选参数