zoukankan      html  css  js  c++  java
  • mac下mogodb安装使用

    ####

    安装:

    Mac OSX 平台安装 MongoDB
    MongoDB 提供了 OSX 平台上 64 位的安装包,你可以在官网下载安装包。
    下载地址:https://www.mongodb.com/download-center#community
    
    从 MongoDB 3.0 版本开始只支持 OS X 10.7 (Lion) 版本及更新版本的系统。
    接下来我们使用 curl 命令来下载安装:
    # 进入 /usr/local cd /usr/local # 下载 sudo curl -O https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-4.0.9.tgz # 解压 sudo tar -zxvf mongodb-osx-ssl-x86_64-4.0.9.tgz # 重命名为 mongodb 目录 sudo mv mongodb-osx-x86_64-4.0.9/ mongodb
    安装完成后,我们可以把 MongoDB 的二进制命令文件目录(安装目录
    /bin)添加到 PATH 路径中: export PATH=/usr/local/mongodb/bin:$PATH
     注意添加完之后要source ~/.bash_profile
    创建日志及数据存放的目录: 数据存放路径: sudo mkdir
    -p /usr/local/var/mongodb 日志文件路径: sudo mkdir -p /usr/local/var/log/mongodb 接下来要确保当前用户对以上两个目录有读写的权限: sudo chown runoob /usr/local/var/mongodb sudo chown runoob /usr/local/var/log/mongodb 以上 runoob 是我电脑上对用户,你这边需要根据你当前对用户名来修改。

    ####

    启动MongoDB的服务端

    接下来我们使用以下命令在后台启动 mongodb:
    mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork
    --dbpath 设置数据存放目录
    --logpath 设置日志存放目录
    --fork 在后台运行
    
    如果不想在后端运行,而是在控制台上查看运行过程可以直接设置配置文件启动:
    mongod --config /usr/local/etc/mongod.conf
    
    查看 mongod 服务是否启动:
    ps aux | grep mongod
    
    使用以上命令如果看到有 mongod 的记录表示运行成功。
    启动后我们可以使用 mongo 命令打开一个终端:
    因为已经加入了bash_profile,所以可以直接mongo运行一个终端
    
    安装了MongoDB之后,是没有密码的,
    可以使用Navicat进行MongoDB的连接,

    ####

    此时,可以通过http访问该数据库,mongodb使用了27017端口,因此在浏览器中打开http://localhost:27017/
    出现如下提示即说明连接成功了。

    It looks like you are trying to access MongoDB over HTTP on the native driver port.

    #####

    使用:

    # use命令:使用/创建数据库,如果数据库不存在就创建数据库。

    如果使用show dbs查看数据库输出的没有自己刚刚创建的数据库,那就要先执行一下插入数据。 

    db:查看当前所连接的数据库

    查看一条数据:db.test.find()

     ####

    python使用MongoDB

    安装

    pip3 install pymongo

    ###

    连接:

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    # print(myclient.server_info())  # 判断是否连接成功
    
    
    mongo_db = myclient['test']   # 这个是库名
    mongo_collection = mongo_db['test_collection']  # 这个是表名

    插入一条数据:

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    # print(myclient.server_info())  # 判断是否连接成功
    
    
    mongo_db = myclient['test']   # 这个是库名
    mongo_collection = mongo_db['test_collection']  # 这个是表名
    
    
    
    import datetime
    info = {
        'name' : 'Zarten',
        'text' : 'Inserting a Document',
        'tags' : ['a', 'b', 'c'],
        'date' : datetime.datetime.now()
    }
    mongo_collection.insert_one(info)

    ###

    插入多条数据:

    import datetime
    info_1 = {
        'name' : 'Zarten_1',
        'text' : 'Inserting a Document',
        'tags' : ['a', 'b', 'c'],
        'date' : datetime.datetime.now()
    }
    
    info_2 = {
        'name' : 'Zarten_2',
        'text' : 'Inserting a Document',
        'tags' : [1, 2, 3],
        'date' : datetime.datetime.now()
    }
    
    insert_list = [info_1, info_2]
    mongo_collection.insert_many(insert_list)

    ####

    删除一条数据 delete_one()

    # 删除一条数据。若删除条件相同匹配到多条数据,默认删除第一条
    
    mongo_collection.delete_one({'text' : 'a'})

    ####

    删除多条数据:

    删除满足条件的所有数据
    mongo_collection.delete_many({'text' : 'a'})

    ####

    更新一条数据

    info = {
        'name': '桃子 ',
        'text': 'peach',
        'tags': [1, 2, 3],
        'date': datetime.datetime.now()
    
    }
    update_condition = {'name' : 'Zarten_2'} #更新的条件,也可以为多个条件
    #更新条件多个时,需要同时满足时才会更新
    # update_condition = {'name' : 'Pear',
    #                     'text' : '梨子'}
    
    mongo_collection.update_one(update_condition, {'$set' : info})

    ###

    更新时,若无满足条件,则插入数据

    update_one() 详细说明参考

    通过设置upsert为True即可

    mongo_collection.update_many(update_condition, {'$set' : info}, upsert= True)

    ###

    更新多条数据 update_many()

    info = {
        'name': 'Zarten',
        'text': 'a',
        'tags': [1, 2, 3],
        'date': datetime.datetime.now()
    
    }
    update_condition = {'text' : 'a'} #更新的条件
    #更新条件多个时,需要同时满足时才会更新
    # update_condition = {'name' : 'Pear',
    #                     'text' : '梨子'}
    
    mongo_collection.update_many(update_condition, {'$set' : info})

    ###

    查询一条数据

    查询一条数据 find_one()
    
    匹配第一条满足的条件的结果,这条结果以dict字典形式返回,若没有查询到,则返回None
    
    find_condition = {
        'name' : 'Banana',
        'text' : 'peach'
    }
    find_result = mongo_collection.find_one(find_condition)
    
    
    可以通过projection参数来指定需要查询的字段,包括是否显示 _id ,更多具体用法参考 find()
    
    find_condition = {
        'name' : 'Zarten_3',
    }
    select_item = mongo_collection.find_one(find_condition, projection= {'_id':False, 'name':True, 'num':True})
    print(select_item)

    ####

    查询一个范围的数据

    查询范围
    
    范围查询通常用$ 例如:$gte 大于等于 $lt 小于;具体的$符号在文章末尾查看
    
    例如:查询一段时间内的数据
    
    import datetime
    find_condition = {
        'date' : {'$gte':datetime.datetime(2018,12,1), '$lt':datetime.datetime(2018,12,3)}
    }
    select_item = mongo_collection.find_one(find_condition)
    print(select_item)

    通过id查询

    通过 _id 来查询
    
    查询条件中_id 类型是ObjectId类型,也就是插入时返回的对象。
    
    若 _id 提供的是str类型的,我们需要转成ObjectId类型
    
    from bson.objectid import ObjectId
    query_id_str = '5c00f60b20b531196c02d657'
    find_condition = {
        '_id' : ObjectId(query_id_str),
    }
    find_result = mongo_collection.find_one(find_condition)
    print(find_result)

    ####

    查询多条数据

    查询多条数据 find()
    
    find() 详细说明
    
    返回满足条件的所有结果,返回类型为 Cursor ,通过迭代获取每个查询结果,每个结果类型为dict字典
    
    find_condition = {
        'name' : 'Banana',
        'text' : '香蕉'
    }
    find_result_cursor = mongo_collection.find(find_condition)
    for find_result in find_result_cursor:
        print(find_result)

    ####

    计数

    计数
    
    注意:此函数在3.7版本添加,以下的版本无法使用,本人版本为3.6.3 固无法使用
    
    find_condition = {
        'name' : 'Zarten_1'
    }
    select_count = mongo_collection.count_documents(find_condition)
    print(select_count)

    ####

    db.hr.count() 

    ####

  • 相关阅读:
    Exadata存储节点的CPU限制成功了没?
    如何减少Exadata计算节点CPU的Core数量
    如何选择适合你的HTAP数据库?
    小知识:Oracle中的层次查询
    小知识:使用MOS下载Oracle介质快速参考
    小知识:Flex ASM特性对集群资源显示的影响
    javaWeb request请求乱码、response响应中文乱码一站式解决方案
    java 文件File与byte[]数组相互转换的两种方式
    pr 如何调高导出视频的清晰度?
    pr 剪辑视频之剃刀用法
  • 原文地址:https://www.cnblogs.com/andy0816/p/15056197.html
Copyright © 2011-2022 走看看