MongoDB安装成功后,在终端下先启动bin下的mongod.exe,设置dbpath;再启动mongo.exe

【python】三大主流数据库——MongoDB CRUD操作,使用python操作数据库

【python】三大主流数据库——MongoDB CRUD操作,使用python操作数据库

新增数据Create

>show dbs 查询当前包含的数据库

>use admin 切换到admin数据库下,可以直接use来创建新的数据库即use students

>db 查看当前数据库

【python】三大主流数据库——MongoDB CRUD操作,使用python操作数据库

查询数据Read

> db.students.update({name:'John'},{name:'JohnC'})

这样更新的结果是直接将以前的数据全部覆盖,改名的同时年龄也没了。因此更改的时候需要定义指定更改的对象:

> db.students.update({name:'John'},stu_obj)

【python】三大主流数据库——MongoDB CRUD操作,使用python操作数据库

删除数据Delete

>db.students.update({ }) 当括号里不填写删除条件时,则删除的是全部的数据

【python】三大主流数据库——MongoDB CRUD操作,使用python操作数据库


练习

写入十五条不同的数据
>db.students.insertMany(
   [
     { name: "bob", age: 16, sex: "male", grade: 95},
     { name: "ahn", age: 18, sex: "female", grade: 45},
     { name: "xi", age: 15, sex: "male", grade: 75},
     { name: "bob1", age: 16, sex: "male", grade: 95},
     { name: "ahn1", age: 18, sex: "male", grade: 45},
     { name: "xi1", age: 15, sex: "female", grade: 55},
     { name: "bob2", age: 16, sex: "female", grade: 95},
     { name: "ahn2", age: 18, sex: "male", grade: 60},
     { name: "xi2", age: 15, sex: "male", grade: 75},
     { name: "bob3", age: 16, sex: "male", grade: 95},
     { name: "ahn3", age: 18, sex: "female", grade: 45},
     { name: "xi3", age: 15, sex: "male", grade: 85},
     { name: "bob4", age: 16, sex: "female", grade: 95},
     { name: "ahn4", age: 18, sex: "male", grade: 45},
     { name: "xi4", age: 15, sex: "male", grade: 75}
   ]
)

查询所有的男生数据(只需要学生的姓名和年龄)
>db.students.find({sex: 'male'}, {name: 1, age: true, _id: 0})
查询成绩及格的学生信息(学生成绩大于或等于60分)
gte grade t表示正数,e表示equal,gte为>=,gle为<=
>db.students.find({grade: {'$gte': 60}}) 
查询所有18岁的男生和16岁的女生的数据
>db.students.find({'$or': [{sex: 'male', age: 18}, {sex: 'female', age: 16}]})
按照学生的年龄进行排序 age=1为升序,age=-1为降序
>db.students.find().sort({age: 1})
将所有的女学生年龄增加一岁

>db.students.update({sex: 'female'}, {'$inc': {age: 1}}, {multi: true})


连接数据库

三种方式:

(base) C:\Users\zhaosy>python
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> client2 = MongoClient('localhost',27017)
>>> client3 = MongoClient('mongodb://localhost:27017')

>>> dir(client)
['HOST', 'PORT', '_BaseObject__codec_options', '_BaseObject__read_concern', '_BaseObject__read_preference', '_BaseObject__write_concern', '_MongoClient__all_credentials', '_MongoClient__cursor_manager', '_MongoClient__default_database_name', '_MongoClient__index_cache', '_MongoClient__index_cache_lock', '_MongoClient__kill_cursors_queue', '_MongoClient__lock', '_MongoClient__options', '_MongoClient__reset_server', '_MongoClient__start_session', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattr__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_cache_credentials', '_cache_index', '_cached', '_close_cursor', '_close_cursor_now', '_constructor_args', '_database_default_options', '_end_sessions', '_ensure_session', '_event_listeners', '_get_server_session', '_get_socket', '_get_topology', '_is_writable', '_kill_cursors', '_kill_cursors_executor', '_process_periodic_tasks', '_purge_credentials', '_purge_index', '_read_preference_for', '_receive_cluster_time', '_repr_helper', '_reset_on_error', '_reset_server_and_request_check', '_retry_with_session', '_retryable_write', '_return_server_session', '_send_cluster_time', '_send_message_with_response', '_server_property', '_socket_for_reads', '_socket_for_writes', '_tmp_session', '_topology', '_topology_settings', '_write_concern_for', 'address', 'arbiters', 'close', 'close_cursor', 'codec_options', 'database_names', 'drop_database', 'event_listeners', 'fsync', 'get_database', 'get_default_database', 'is_locked', 'is_mongos', 'is_primary', 'kill_cursors', 'list_database_names', 'list_databases', 'local_threshold_ms', 'max_bson_size', 'max_idle_time_ms', 'max_message_size', 'max_pool_size', 'max_write_batch_size', 'min_pool_size', 'next', 'nodes', 'primary', 'read_concern', 'read_preference', 'retry_writes', 'secondaries', 'server_info', 'server_selection_timeout', 'set_cursor_manager', 'start_session', 'unlock', 'watch', 'write_concern']
>>> client.PORT
27017
>>> client.HOST
'localhost'
>>> client.database_names()
['admin', 'local', 'students']
>>>>>> client.close()
>>> client.database_names() 

['admin', 'local', 'students']

关闭之后仍能连接,因为mongodb默认带了一个连接池,是单独出来的。有连接池,就会在连接池里找,没有就会新建一个。


相关文章: