文档数据库MongoDB基本安装、使用以及和python、Java结合的简单案例

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简单实例主要涉及连接、增删查改和高并发模拟,下个礼拜有几门考试,很慌,下个月考完试再把这里没写的内容补上。

猜你喜欢

转载自blog.csdn.net/qq_37575994/article/details/84484782