Python操作mongodb

安装:

1
pip install pymongo

基本使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
conn = MongoClient('127.0.0.1', 27017)
db = conn.pythontest #指定库,如果没有会新建
collection = db.col #指定collection,如果没有会新建


# 插入
# 插入单条数据
>>> collection.insert({"name":"Sllin","age":1})
ObjectId('5db7fa32093c05b0bb42d4bf')

# 插入多条数据
>>> collection.insert([{"name":"Zhang","age":2}, {"name":"Li","age":3}])
[ObjectId('5db7fd8a093c05b0bb42d4c0'), ObjectId('5db7fd8a093c05b0bb42d4c1')]


# 查询
# 查询单条数据
>>> collection.find_one({"name":"Sllin"})
{'_id': ObjectId('5db7fa32093c05b0bb42d4bf'), 'name': 'Sllin', 'age': 1}

# 查询多条数据
>>> for i in collection.find():
print(i)
{'_id': ObjectId('5db7fa32093c05b0bb42d4bf'), 'name': 'Sllin', 'age': 1}
{'_id': ObjectId('5db7fd8a093c05b0bb42d4c0'), 'name': 'Zhang', 'age': 2}
{'_id': ObjectId('5db7fd8a093c05b0bb42d4c1'), 'name': 'Li', 'age': 3}


# 更新
# 更新一条数据,update(查询条件,{'$set':更新数据})
>>> collection.update({"name":"Sllin"},{'$set':{"age":6}})
{'ok': 1, 'nModified': 1, 'n': 1, 'updatedExisting': True}

# 更新多条数据
>>> u = collection.update_many({"name":"Sllin"},{'$set':{"age":7}})
>>> u.raw_result
{'ok': 1, 'nModified': 2, 'n': 2, 'updatedExisting': True}


# 删除
# 根据id删除单条数据,也可直接使用collection.find_one_and_delete,只是find_one_and_delete返回的结果是删除前的数据
>>> id = collection.find_one({"name":"Li"})["_id"]
>>> collection.remove(id)
{'ok': 1, 'n': 1}

# 删除多条数据
>>> collection.remove({"name":"Sllin"})
{'ok': 1, 'n': 2}

条件查询:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 条件:
# 大于 - $gt
# 小于 - $lt
# 大于等于 - $gte
# 小于等于 - $lte
# 在里面 - $in
# 与 - $and
# 或 - $or
# 返回条数限制 - $limit

# 插入测试数据
>>> collection.insert({"name":"Sllin","age":11})
ObjectId('5db809c9093c05b0bb42d4c3')
>>> collection.insert({"name":"Li","age":12})
ObjectId('5db809d6093c05b0bb42d4c4')
>>> collection.insert({"name":"Zhang","age":20})
ObjectId('5db809e0093c05b0bb42d4c5')

# 查询age大于19的数据
>>> collection.find_one({"age":{"$gt":19}})
{'_id': ObjectId('5db809e0093c05b0bb42d4c5'), 'name': 'Zhang', 'age': 20}

# 查询age是11、12的数据
>>> for user in collection.find({"age":{"$in":(11,12)}}):
print(user)
{'_id': ObjectId('5db809c9093c05b0bb42d4c3'), 'name': 'Sllin', 'age': 11}
{'_id': ObjectId('5db809d6093c05b0bb42d4c4'), 'name': 'Li', 'age': 12}

# 查询age是11且name为Sllin的数据
>>> for user in collection.find({"$and":[{"age":11},{"name":"Sllin"}]}):
print(user)
{'_id': ObjectId('5db809c9093c05b0bb42d4c3'), 'name': 'Sllin', 'age': 11}

# 查询age是11或12的数据
>>> for user in collection.find({"$or":[{"age":11},{"age":12}]}):
print(user)
{'_id': ObjectId('5db809c9093c05b0bb42d4c3'), 'name': 'Sllin', 'age': 11}
{'_id': ObjectId('5db809d6093c05b0bb42d4c4'), 'name': 'Li', 'age': 12}

# 查询age大于10的,但只返回两条
>>> for user in collection.find({"age":{"$gt":10}}).limit(2):
print(user)
{'_id': ObjectId('5db809c9093c05b0bb42d4c3'), 'name': 'Sllin', 'age': 11}
{'_id': ObjectId('5db809d6093c05b0bb42d4c4'), 'name': 'Li', 'age': 12}

- - END - -


腾讯云
0%