mongo数据库应用

专高四--日考8

(一)

1.编写一个Python程序,在MongoDB中插入多条数据,包含如下字段:职位标题,发布者,内容,发表时间,职位关键字(Python或Java或C++),职位城市,公司名称,薪水。
2.导入正确的第三方模块。
3.将上述数据保到MongoDB集合中。
4.修改第一个职位关键字为Python的数据,将关键字改为 java。
5.查询出所有的职位关键字为Python的岗位信息。
6.查询出发表时间大于今天0点的岗位信息。
7.查询出所有的发表时间大于今天12点,小于今天18点的岗位信息。
8.使用skip和limit查询出第三条数据。
9.按照发表时间进行降序,输出所有的招聘数据。
10.每道题要有合理的注释。

from pymongo import MongoClient
import datetime

client = MongoClient(host='127.0.0.1',port=27017)  # 建立连接了,连的是本地的服务
col2 = client['2106a']['test2']
data = [
    {'标题': 'python火了', '发布者': '刘红光', '发表时间': datetime.datetime(2023, 11, 26, 1, 2, 3), '关键字': 'python',
     '城市': '坤西市', '公司': '坤东有限公司', '薪水': 1800},
    {'标题': 'bt2', '发布者': '程继超', '发表时间': datetime.datetime(2023, 1, 26, 1, 2, 3), '关键字': 'python',
     '城市': '坤西市', '公司': '坤东有限公司', '薪水': 2800},
    {'标题': '180岁厉害了', '发布者': '张康婕', '发表时间': datetime.datetime(2023, 12, 26, 1, 2, 3),
     '关键字': 'python', '城市': '坤西市', '公司': '坤东有限公司', '薪水': 3800}]
col2.delete_many({})  #清空数据
col2.insert_many(data)  #插入多条数据

# 4.修改第一个职位关键字为Python的数据,将关键字改为 java。
col2.update_one({'关键字':'python'},{'$set':{'关键字':'java'}})
print(list(col2.find()))

# 5.查询出所有的职位关键字为Python的岗位信息。
print(list(col2.find({'关键字':'python'})))

# 6.查询出发表时间大于今天0点的岗位信息。
print(list(col2.find({'发表时间':{'$gt':datetime.datetime(2023, 11, 16)}})))
# 7.查询出所有的发表时间大于今天12点,小于今天18点的岗位信息。
print(list(col2.find({'发表时间':{'$gt':datetime.datetime(2023, 1, 16),'$lt':datetime.datetime(2023, 12, 16)}})))
# 8.使用skip和limit查询出第三条数据。
list8 = list(col2.find({},{'_id':0}).skip(2).limit(3))  #跳过skip
print(list8)
# 9.按照发表时间进行降序,输出所有的招聘数据。
list9 = list(col2.find().sort('发表时间',-1))  #-1是降序
print(list9)
# 10.每道题要有合理的注释。

(二)

1.编写一个Python程序,在MongoDB中插入多条数据,包含如下字段:职位标题,发布者,内容,发表时间,职位关键字(Python或Java或C++),职位城市,公司名称,薪水。
2.导入正确的第三方模块。
3.将上述数据保到MongoDB集合中。
4.查询出所有的数据,按照薪水进行降序排序。
5.给职位标题字段添加一个索引。
6.使用MongoDB聚合,计算每个发布者发布的岗位的数量。
7.使用MongoDB聚合,计算每个城市的岗位的数量。
8.使用MongoDB聚合,计算每个公司发布的岗位的数量。
9.查询出薪水在 10000-15000之间的招聘数据。
10.每道题要有合理的注释。
from pymongo import MongoClient
import datetime

client = MongoClient(host='127.0.0.1',port=27017)  # 建立连接了,连的是本地的服务
col3 = client['2106a']['test3']
data = [
    {'标题': 'python火了', '发布者': '刘红光', '发表时间': datetime.datetime(2023, 11, 26, 1, 2, 3), '关键字': 'python',
     '城市': '坤西市', '公司': '坤东有限公司', '薪水': 13000},
    {'标题': 'bt2', '发布者': '程继超', '发表时间': datetime.datetime(2023, 1, 26, 1, 2, 3), '关键字': 'python',
     '城市': '坤西市', '公司': '坤东有限公司', '薪水': 2800},
    {'标题': '180岁厉害了', '发布者': '张康婕', '发表时间': datetime.datetime(2023, 12, 26, 1, 2, 3),
     '关键字': 'python', '城市': '坤西市', '公司': '坤东有限公司', '薪水': 3800}]

col3.delete_many({})
col3.insert_many(data)
# 5.给职位标题字段添加一个索引。
col3.create_index('标题')  #索引
# 6.使用MongoDB聚合,计算每个发布者发布的岗位的数量。
list6 = list(col3.aggregate(pipeline=[
    {'$group':{'_id':'$发布者','数量':{'$sum':1}}},
]))
# 7.使用MongoDB聚合,计算每个城市的岗位的数量。
list7 = list(col3.aggregate(pipeline=[
    {'$group':{'_id':'$城市','随便':{'$sum':1}}}
]))
# 8.使用MongoDB聚合,计算每个公司发布的岗位的数量。
list8 = list(col3.aggregate(pipeline=[
    {'$group':{'_id':'$公司','数量':{'$sum':1}}}
]))
# 9.查询出薪水在 10000-15000之间的招聘数据。
# list9 = list(col3.find({'薪水':{'$gt':10000,'$lt':15000}},{'_id':0}))
list9 = list(col3.aggregate(pipeline=[
    {'$match':{'薪水':{'$gt':10000,'$lt':15000}}},
    {'$project':{'_id':0}}
]))
list10 = list(col3.find())  #找所有
print(list10)
list11 = list(col3.aggregate(pipeline=[  #找所有
    {'$match':{}}
]))
print(list11)

(三)

1.编写一个Python程序,在MongoDB中插入多条数据,包含如下字段:职位标题,发布者,内容,发表时间,职位关键字(Python或Java或C++),职位城市,公司名称,薪水。
2.导入正确的第三方模块。
3.将上述数据保到MongoDB集合中。
4.查询出所有的数据,要求只包含 职位标题、发表时间、职位城市、公司名称,薪水 的信息。
5.使用 type操作符,查询公司名称为 string 类型的数据。
6.使用MongoDB聚合,查询出薪水在10000-20000之间的数据。然后分组计算每个公司的岗位数量。
7.查询工资在[0, 10000), [10000, 15000), [15000, 20000)三个区间的数量。
8.计算出每个城市招聘数量占有岗位总数的占比。
9.清空集合中所有的数据。
10.每道题要有合理的注释。

from pymongo import MongoClient
import datetime
import pandas as pd
client = MongoClient(host='127.0.0.1',port=27017)  # 建立连接了,连的是本地的服务
col4 = client['2106a']['test4']
data = [
    {'标题': 'python火了', '发布者': '刘红光', '发表时间': datetime.datetime(2023, 11, 26, 1, 2, 3), '关键字': 'python',
     '城市': '坤西市', '公司': '坤东有限公司', '薪水': 13000},
    {'标题': 'bt2', '发布者': '程继超', '发表时间': datetime.datetime(2023, 1, 26, 1, 2, 3), '关键字': 'python',
     '城市': '坤西市', '公司': '坤东有限公司', '薪水': 2800},
    {'标题': '180岁厉害了', '发布者': '张康婕', '发表时间': datetime.datetime(2023, 12, 26, 1, 2, 3),
     '关键字': 'python', '城市': '坤西市', '公司': '坤东有限公司', '薪水': 3800}]
col4.delete_many({})
col4.insert_many(data)
# 4.查询出所有的数据,要求只包含 职位标题、发表时间、职位城市、公司名称,薪水 的信息。
print(list(col4.find({},{'_id':0,'发布者':0,'关键字':0})))
# 5.使用 type操作符,查询公司名称为 string 类型的数据。
print(list(col4.find({'公司':{'$type':'string'}})))
# 6.使用MongoDB聚合,查询出薪水在10000-20000之间的数据。然后分组计算每个公司的岗位数量。
list6 = list(col4.aggregate(pipeline=[
    {'$match':{'薪水':{'$gt':10000,'$lt':20000}}},
    {'$group':{'_id':'$公司','数量':{'$sum':1}}}
]))
print(list6)
# 7.查询工资在[0, 10000), [10000, 15000), [15000, 20000)三个区间的数量。
# 8.计算出每个城市招聘数量占有岗位总数的占比。
df = pd.DataFrame(data)
bins = [0,10000,15000,20000]
labels = ['0-10000','10001-15000','15001-20000']
df['薪水区间']=pd.cut(df['薪水'],labels=labels,bins=bins)
print(df['薪水区间'])
# 9.清空集合中所有的数据。
col4.delete_many({})
# 10.每道题要有合理的注释。
下面是一个使用MongoDB连接池的示例代码,使用了Java语言MongoDB的Java驱动程序: ```java import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; import com.mongodb.client.MongoDatabase; import com.mongodb.client.MongoCollection; public class MongoConnectionPoolExample { private static MongoClient mongoClient; private static MongoDatabase database; private static final String MONGO_URI = "mongodb://localhost:27017/"; private static final String DATABASE_NAME = "your_database_name"; public static void main(String[] args) { // 初始化连接池 initializeConnectionPool(); // 进行查询操作等 performQueries(); // 关闭连接池 closeConnectionPool(); } private static void initializeConnectionPool() { MongoClientURI uri = new MongoClientURI(MONGO_URI); mongoClient = new MongoClient(uri); database = mongoClient.getDatabase(DATABASE_NAME); } private static void performQueries() { MongoCollection<Document> collection = database.getCollection("your_collection_name"); // 在这里执行你的查询操作 // 例如查询所有文档 FindIterable<Document> documents = collection.find(); for (Document document : documents) { System.out.println(document); } // 关闭游标 documents.close(); } private static void closeConnectionPool() { mongoClient.close(); } } ``` 在这个示例,我们通过`MongoClientURI`指定MongoDB的连接URI,然后使用它来创建`MongoClient`实例。然后,我们获取指定数据库的`MongoDatabase`对象,并在`performQueries()`方法执行我们的查询操作。最后,在`closeConnectionPool()`方法关闭连接池。 请注意,在实际的应用程序,你可能需要根据需要进行适当的异常处理和错误处理,并确保在适当的时机关闭连接池以释放资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值