目标:从一个数据库中提取几个集合中的部分数据,组合起来一共一万条。几个集合,不足一千条数据的集合就全部提取,够一千条的就用一万减去不足一千的,再除以大于一千的集合个数,得到的值即为所需提取文档的个数。从每个集合中提取的数据存放到新的对应集合中,新集合名称为原先集合加"_col"。
用到相关技术点:
操作MONGODB:
先通过IP和端口号连接到MONGODB所在的机器,得到一个MONGODB客户端对象,然后认证某个数据库的账号密码连接到该数据库,得到一个该数据库的对象。一个数据库下有很多集合(相当于SQL中的表),集合里数据存储格式是BSON(同JSON)格式,集合中有很多条文档(相当于SQL中的记录)。可以通过数据库对象得到一个集合的对象,通过集合的对象来进行数据库增删改查的操作。
MONGODB操作的函数:
创建数据库:mydb= myclient["runoobdb"]
查看该客户端的所有数据库:dblist= myclient.list_database_names()
判断数据库是否存在:if"runoobdb"indblist: print("数据库已存在!")
创建集合:mycol= mydb["sites"]
查看该数据库的所有集合:collist= mydb. list_collection_names()
判断集合是否存在:if"sites"incollist: print("集合已存在!")
插入一个文档:
mydict= { "name": "RUNOOB", "alexa": "10000", "url": "https://www.runoob.com"}
x= mycol.insert_one(mydict)
print(x)
输出结果:
insert_one() 方法返回 InsertOneResult 对象,该对象包含 inserted_id 属性,它是插入文档的 id 值。print(x.inserted_id)。如果我们在插入文档时没有指定 _id,MongoDB 会为每个文档添加一个唯一的 id。
插入多个文档:
mylist= [{ "name": "Taobao", "alexa": "100", "url": "https://www.taobao.com"}, { "name": "QQ", "alexa": "101", "url": "https://www.qq.com"}, { "name": "Facebook", "alexa": "10", "url": "https://www.facebook.com"}, { "name": "知乎", "alexa": "103", "url": "https://www.zhihu.com"}, { "name": "Github", "alexa": "109", "url": "https://www.github.com"} ]
x= mycol.insert_many(mylist)
# 输出插入的所有文档对应的 _id 值
print(x.inserted_ids)
插入查询结果文档集:
x.insert_many(mycol.find())
查询一条数据:
x