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.

#####

使用:

mac下mogodb安装使用

mac下mogodb安装使用

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

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

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

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

mac下mogodb安装使用

 

 

 ####

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)

####

计数

计数

count_documents() 详细说明

注意:此函数在3.7版本添加,以下的版本无法使用,本人版本为3.6.3 固无法使用

find_condition = {
    'name' : 'Zarten_1'
}
select_count = mongo_collection.count_documents(find_condition)
print(select_count)

 

####

上一篇:一个经典的多线程condition使用实例代码,请评论


下一篇:springBoot按条件装配:Condition