1、文档数据库MongoDB用于记录文档结构的数据,如:Json、XML等,一条文档就是一条记录。主要特征是高性能【提供json、XML等可嵌入式数据快速处理功能;提供文档的索引功能,以提高查询速度】、丰富的查询语言、高可用性【自动故障转移和数据冗余处理功能】、水平拓展能力、多个存储引擎的支持。
2、我的安装过程【win10系统64位】:进入网址http://www.runoob.com/mongodb/mongodb-window-install.html ;创建目录E:\python_tool\MongoDB,在该目录下创建子文件夹data,最后在data里面创建db和log两个文件夹;目录创建完成以后选择刚才下载好的文件进行安装,一路同意以及next,直到遇到了选择安装类型,选择Custom【自定义安装】,选择安装路径为E:\python_tool\MongoDB\data,其余操作继续直接next,直到完成,安装结束。
3、常规启动:
win+R输入cmd打开窗口,将窗口路径转到安装路径的bin目录下,如我的就是 E:\python_tool\MongoDB\data\bin ,再输入命令mongod -dbpath "E:\python_tool\MongoDB\data\db" 回车【注意参数之间空格】,会收到一些反馈信息,已经启动。再开一个新的cmd窗口,将窗口路径转到将窗口路径转到安装路径的bin目录下,我的依然是E:\python_tool\MongoDB\data\bin ,再输入mongo回车即进入了shell交互式命令执行平台,可以在>-这两个符号后输入各种数据库命令了。
4、配置启动方法:
配置:win+R输入cmd打开窗口,将窗口路径转到安装路径的bin目录下,输入 【如果目录和我一样,原样复制即可使用】
mongod --dbpath "E:\python_tool\MongoDB\data\db" --logpath "E:\python_tool\MongoDB\data\log\MongoDB.log" --install --serviceName "MongoDB"
回车。
启动:按下win键,左侧列表寻找Windows系统的文件夹,然后找到命令提示符,右键,更多-以管理员身份运行,【如果不是使用管理员权限操作窗口打不开这个服务】此窗口转到安装路径的bin目录下,输入net start MongoDB回车,启动服务,再输入mongo进入shell交互式命令执行平台,可以在>-这两个符号后输入各种数据库命令了。关闭服务,输入net stop MongoDB ,回车即关闭。
5、以下所有语句都在配置完启动方法以后,启动服务输入mongo回车,再输入命令运行的!
6、新手第一练:创建数据库,输入use lp_test回车收到一条反馈信息,再show dbs回车查看当前数据库,包含三个保留数据库【admin、local、config】,并没有发现lp_test,原因是新建的数据库没有实质性内容。向该数据库增加记录【新的文档单个/多个插入命令db.collection.insertOne()/insertMany()】,旧版如:a、插入一条文档:
db.lp_testCollection.insert({name:"hello",author:"lp",hello:true})
b、插入多条文档:
db.lp_testCollection.insert([{item:"lp1",price:15},{item:"lp2",price:30}])
c、变量方式插入文档:
peope007=({name:"007"})
回车
db.lp_testCollection.insert(peope007)
d、有序插入多条文档,下例我没有设置_id的值,如果我设置了,且ordered值为true,那么我插入的文档在_id相同的情况下不能插入,一条都不能;如果ordered值为false,除了出错文档以外,其余文档都可插入:
db.lp_testCollection.insert([{item:"lp1",price:15},{item:"lp2",price:30}],{ordered:true})
然后输入db.lp_testCollection.find()查看lp_test数据库里lp_testCollection集合里的内容【也可以用 db.lp_testCollection.find().pretty(),格式更好看】。此时,show dbs回车就可以看到新建的数据库了,db.stats()回车则可以看到统计出的当前数据库的信息,通过db.getCollectionNames()查看当前数据库下所有集合的名称,通过show roles查看当前数据库用户角色权限用户名密码等,甚至修改用户权限以及新建用户。最后,我们使用db.dropdatebase()删除掉当前数据库。做完这一系列新手入门操作,其余上手就很快了。
7、查询:
a、等价条件并指定显示值查询实例:
db.lpinf.find({name:"lp1"},{name:1,price:1,_id:0})
b、数组查询:
b.1等价查询某一数组:
db.lpinf.find({tags:["good","book"]})
b.2查询数组里有某一个值的数组:
db.lpinf.find({tags:"good"})
b.3查询有4个元素的数组:
db.lpinf.find({tags:{$size:4}})
c、查找null值字段,查找指定无值字段:
db.lpinf.find({_id:121,toy:null})
db.lpinf.find({_id:121,toy:{$exists:false}})
d、查找返回值游标操作:
var showCur=db.lpinf.find()
showCur.forEach(printjson)//打印显示游标获取的集合
e、limit与skip方法查询
db.lpinf.find().limit(1)//返回第一条文档
db.lpinf.find().skip(3)//从第三条文档开始显示
f、用$in实现or条件查找:
db.lpinf.find({_id:{$in:[12,Object("abc123123")]}})//查询_id等于12或abc123123的文档记录
g、通过查询操作符【与and、或or、正则、大于gt、小于lt、不等于ne、不大于lte、不小于gte】来查询:
db.lpinf.find({price:{$lt:15}})//查询price小于15的文档记录
h、区间查找:
db.lpinf.find({price:{$gt:3,$lt:33}})//查找price大于3小于33的文档记录,可用于文档数值字段也可以用于数组字段
8、更新文档语法:
db.collection.update(<query>【upate的查询条件】,<update>【更新文档对象】,{【可选参数】{upsert:<boolean>,multi:<boolean>,writeConcern:<document>,collation:<document>})
9、删除文档语法:
db.collection.remove(<query>【删除文档条件】,{justOne:<boolean>,writeConcern:<document>,collation:<document>})
10、相信你已经具备自学能力,其他重要操作,比如,建立索引、聚合、复制、分片、写出错机制、配置参数等请自行学习网上学习。
11、python使用MongoDB数据库的简单实例操作,入门级:首先联网情况下打开cmd输入python -m pip install pymongo回车安装好pymongo。
运行下面例子前请确保已经启动了MongoDB:【3.0版本,如要完全复制粘贴运行,请确保已经有一个lp_test的数据库,一个lp_test的集合在该数据库里,我已经在eclipse运行过了,复制粘贴到ide以后把下面五个函数的注释去掉即可运行】
#coding:utf-8
'''
@author: lp
'''
import pymongo
client=pymongo.MongoClient("localhost",27017)#获取数据库连接,我的数据库叫lp_test,集合也叫lp_test
lpdb=client.lp_test#连接到数据库
lp=lpdb.lp_test#获取数据库的集合
def one_insert():
'''
单个插入
'''
lp_docu={"title":"没意思","author":"NC"}
lp.insert(lp_docu)#文档添加到集合
print(lp.find().count())#查询文档数量
def many_insert():
'''
批量插入,数量不要过多
'''
n1_docu={"title":"123","name":456}
n2_docu={"title":"456","pop":"456"}
n3_docu={"title":"lplplp","lplpl":n1_docu}
n=[n1_docu,n2_docu,n3_docu]
lp.insert(n)
for i in lp.find():#打印集合
print(i)
def select_sort(key_docu):
'''
升序遍历
'''
print("打印:")
for i in lp.find().sort(key_docu,pymongo.ASCENDING):#打印集合
print(i)
def update_query():
'''
更新
'''
lp.update({"name":"hello"},{"$set":{"hello":False,"author":"zzjzzj"}})
print("更新以后打印这个文档:")
print(lp.find_one({"name":"hello"}))
def remove_query():
'''
删除
'''
lp.remove({"title":"lplplp"})
print("删除以后打印这个文档:")
print(lp.find_one({"title":"lplplp"}))
print(lp.find().count())#查询文档数量
print("一行:",lp.find_one())#查询第一条文档
print("打印:")
for i in lp.find():#打印集合
print(i)
#one_insert()
#many_insert()
#select_sort("title")
#update_query()
#remove_query()
12、Java操作MongoDB简单实例主要涉及连接、增删查改和高并发模拟,下个礼拜有几门考试,很慌,下个月考完试再把这里没写的内容补上。