Python中的MongoDB基本操作:连接、查询实例
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案。它的特点是高性能、易部署、易使用,存储数据非常方便。
MongoDB 简单使用
联接数据库
In [1]: import pymongo
In [2]: from pymongo import Connection
In [3]: connection = Connection('192.168.1.3', 27017) //创建联接
Connection 相关参数
Connection([host='localhost'[, port=27017[, pool_size=None[, auto_start_request=None[, timeout=None[, slave_okay=False[, network_timeout=None[, document_class=dict[, tz_aware=True]]]]]]]]])
数据库操作
In [9]: c.database_names() //列出所有数据库名称
Out[9]: [u'test', u'admin', u'yuhen', u'sms', u'local']
In [10]: c.server_info() //查看服务器相关信息
Out[10]:
{u'bits': 64,
u'gitVersion': u'nogitversion',
u'ok': 1.0,
u'sysInfo': u'Linux yellow 2.6.24-27-server #1 SMP Fri Mar 12 01:23:09 UTC 2010 x86_64 BOOST_LIB_VERSION=1_40',
u'version': u'1.2.2'}
In [16]: db = c['test'] //选择数据库
In [17]: db.collection_names() //列出当前数据库中所有集合名称
Out[17]: [u'system.indexes', u'fs.files', u'fs.chunks', u'test_gao']
In [23]: db.connection //查看联接信息
Out[23]: Connection('192.168.1.3', 27017)
In [24]: db.create_collection('test_abeen') //创建新集合
Out[24]: Collection(Database(Connection('192.168.1.3', 27017), u'test'), u'test_abeen')
In [25]: db.last_status() //查看上次操作状态
Out[25]: {u'err': None, u'n': 0, u'ok': 1.0}
In [26]: db.name //查看当前数据库名称
Out[26]: u'test'
In [27]: db.profiling_info() //查看配置信息
Out[27]: []
In [28]: db.profiling_level()
Out[28]: 0.0
集合操作
In [31]: db.collection_names() //查看当前数据库所有集合名称
Out[31]:
[u'system.indexes',
u'fs.files',
u'fs.chunks',
u'test_gao',
u'system.users',
u'test_abeen']
In [32]: c = db.test_abeen //选择集合
In [33]: c.name //查看当前集合名称
Out[33]: u'test_abeen'
In [35]: c.full_name //查看当前集合全名
Out[35]: u'test.test_abeen'
In [36]: c.database //查看当前集合数据库相关信息
Out[36]: Database(Connection('192.168.1.3', 27017), u'test')
In [38]: post = {"author":"Mike","text":"this is a test by abeen"}
In [39]: posts = db.posts
In [40]: posts.insert(post) //向数据库集合插入文档,默认创建集合
Out[40]: ObjectId('4c358492421aa91e70000000')
In [41]: db.collection_names() //显示所有集合名称
Out[41]:
[u'system.indexes',
u'fs.files',
u'fs.chunks',
u'test_gao',
u'system.users',
u'test_abeen',
u'posts']
In [42]: posts.find_one() //从集合查找信息
Out[42]:
{u'_id': ObjectId('4c358492421aa91e70000000'),
u'author': u'Mike',
u'text': u'this is a test by abeen'}
In [52]: p.update({"author":"Mike"},{"$set":{"author":"abeen","text":"this is a test by abeen shan shan"}})//更新集合文档信息
In [55]: list(p.find())
Out[55]:
[{u'_id': ObjectId('4c358492421aa91e70000000'),
u'author': u'abeen',
u'text': u'this is a test by abeen shan shan'}]
In [96]: list(posts.find())
Out[96]:
[{u'_id': ObjectId('4c358492421aa91e70000000'),
u'author': u'Mike',
u'text': u'this is a test by abeen'},
{u'_id': ObjectId('4c358ad4421aa91e70000002'), u'a': u'aa', u'b': u'bb'},
{u'_id': ObjectId('4c358ad9421aa91e70000003'), u'a': u'aa', u'b': u'bb'},
{u'_id': ObjectId('4c358abb421aa91e70000001'),
u'a': u'abeen',
u'b': u'this bb is updated'}]
In [97]: posts.remove({"a":"abeen"}) //删除符合条件的文档
In [98]: list(posts.find())
Out[98]:
[{u'_id': ObjectId('4c358492421aa91e70000000'),
u'author': u'Mike',
u'text': u'this is a test by abeen'},
{u'_id': ObjectId('4c358ad4421aa91e70000002'), u'a': u'aa', u'b': u'bb'},
{u'_id': ObjectId('4c358ad9421aa91e70000003'), u'a': u'aa', u'b': u'bb'}]
In [102]: db.collection_names()
Out[102]:
[u'system.indexes',
u'fs.files',
u'fs.chunks',
u'test_gao',
u'system.users',
u'test_abeen',
u'posts',
u'doc_abeen']
In [104]: db.drop_collection("doc_abeen") //删除集合
In [105]: db.collection_names()
Out[105]:
[u'system.indexes',
u'fs.files',
u'fs.chunks',
u'test_gao',
u'system.users',
u'test_abeen',
u'posts']
代码
In [113]: result = db.posts.find({"a":"aa"})//查找
In [114]: type(result)
Out[114]:
In [119]: list(result)
Out[119]:
[{u'_id': ObjectId('4c358ad4421aa91e70000002'), u'a': u'aa', u'b': u'bb'},
{u'_id': ObjectId('4c358ad9421aa91e70000003'), u'a': u'aa', u'b': u'bb'}]
find格式
find([spec=None[, fields=None[, skip=0[, limit=0[, timeout=True[, snapshot=False[, tailable=False[, sort=None[, max_scan=None[, as_class=None[, **kwargs]]]]]]]]]]])
代码
In [120]: db.posts.count()//当前集合文档数
Out[120]: 3
In [121]: type(db.posts)
Out[121]:
In [138]: posts.rename('test_abeen')//重命名当前集合
In [139]: db.collection_names()
Out[139]:
[u'system.indexes',
u'fs.files',
u'fs.chunks',
u'test_gao',
u'system.users',
u'test_abeen']
In [151]: for post in c.find({"a":"aa"}).sort("a"): //查询并排序列
post
Out[152]: {u'_id': ObjectId('4c358ad4421aa91e70000002'), u'a': u'aa', u'b': u'bb'}
Out[152]: {u'_id': ObjectId('4c358ad9421aa91e70000003'), u'a': u'aa', u'b': u'bb'}
> db.foo.insert( { x : 1, y : 1 } )
> db.foo.insert( { x : 2, y : "string" } )
> db.foo.insert( { x : 3, y : null } )
> db.foo.insert( { x : 4 } )
// Query #1 y 为null或不存在
> db.foo.find( { "y" : null } )
{ "_id" : ObjectId("4dc1975312c677fc83b5629f"), "x" : 3, "y" : null }
{ "_id" : ObjectId("4dc1975a12c677fc83b562a0"), "x" : 4 }
// Query #2 y为null的值
> db.foo.find( { "y" : { $type : 10 } } )
{ "_id" : ObjectId("4dc1975312c677fc83b5629f"), "x" : 3, "y" : null }
// Query #3 y不存在的结果
> db.foo.find( { "y" : { $exists : false } } )
{ "_id" : ObjectId("4dc1975a12c677fc83b562a0"), "x" : 4 }

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Sebagai profesional data, anda perlu memproses sejumlah besar data dari pelbagai sumber. Ini boleh menimbulkan cabaran kepada pengurusan data dan analisis. Nasib baik, dua perkhidmatan AWS dapat membantu: AWS Glue dan Amazon Athena.

Redis Kegigihan akan mengambil ingatan tambahan, RDB sementara meningkatkan penggunaan memori apabila menjana snapshot, dan AOF terus mengambil ingatan apabila memasuki log. Faktor yang mempengaruhi termasuk jumlah data, dasar kegigihan dan konfigurasi REDIS. Untuk mengurangkan kesan, anda boleh mengkonfigurasi dasar snapshot RDB, mengoptimumkan konfigurasi AOF, menaik taraf perkakasan dan memantau penggunaan memori. Selain itu, adalah penting untuk mencari keseimbangan antara prestasi dan keselamatan data.

Python digunakan secara meluas dalam bidang pembangunan web, sains data, pembelajaran mesin, automasi dan skrip. 1) Dalam pembangunan web, kerangka Django dan Flask memudahkan proses pembangunan. 2) Dalam bidang sains data dan pembelajaran mesin, numpy, panda, scikit-learn dan perpustakaan tensorflow memberikan sokongan yang kuat. 3) Dari segi automasi dan skrip, Python sesuai untuk tugas -tugas seperti ujian automatik dan pengurusan sistem.

Tetapan saiz memori Redis perlu mempertimbangkan faktor -faktor berikut: Jumlah data dan trend pertumbuhan: Anggarkan saiz dan kadar pertumbuhan data yang disimpan. Jenis Data: Jenis yang berbeza (seperti senarai, hash) menduduki memori yang berbeza. Dasar caching: cache penuh, cache separa, dan dasar pemisahan mempengaruhi penggunaan memori. Puncak Perniagaan: Tinggalkan memori yang cukup untuk menangani puncak lalu lintas.

Memori Redis melonjak termasuk: jumlah data yang terlalu besar, pemilihan struktur data yang tidak betul, masalah konfigurasi (seperti tetapan MaxMemory terlalu kecil), dan kebocoran memori. Penyelesaian termasuk: penghapusan data yang telah tamat tempoh, menggunakan teknologi mampatan, memilih struktur yang sesuai, menyesuaikan parameter konfigurasi, memeriksa kebocoran memori dalam kod, dan kerap memantau penggunaan memori.

Anda boleh menggunakan pernyataan SQL untuk memutuskan sambungan pangkalan data, termasuk: 1. Pernyataan Tutup: Tutup sambungan yang ditentukan dengan segera; 2. Putuskan Pernyataan: Tutup sambungan dan lepaskan sumber; 3. Pernyataan urus niaga akhir: Kirim/gulung kembali transaksi dan putuskan sambungan; 4. Pernyataan Keluar: Menamatkan skrip dan tutup semua sambungan; 5. Kaedah objek sambungan (khusus untuk sistem pangkalan data). Di samping itu, adalah disyorkan untuk melakukan atau melancarkan urus niaga yang belum selesai sebelum memutuskan sambungan.

Anda boleh mempelajari konsep pengaturcaraan asas dan kemahiran Python dalam masa 2 jam. 1. Belajar Pembolehubah dan Jenis Data, 2.

Soalan: Bagaimana untuk melihat versi pelayan Redis? Gunakan alat perintah Redis-cli -version untuk melihat versi pelayan yang disambungkan. Gunakan arahan pelayan INFO untuk melihat versi dalaman pelayan dan perlu menghuraikan dan mengembalikan maklumat. Dalam persekitaran kluster, periksa konsistensi versi setiap nod dan boleh diperiksa secara automatik menggunakan skrip. Gunakan skrip untuk mengautomasikan versi tontonan, seperti menyambung dengan skrip Python dan maklumat versi percetakan.
