Rumah pembangunan bahagian belakang Tutorial Python Python中的MongoDB基本操作:连接、查询实例

Python中的MongoDB基本操作:连接、查询实例

Jun 10, 2016 pm 03:17 PM
mongodb python Operasi asas Pertanyaan menyambung

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 }

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara Menggunakan AWS Glue Crawler dengan Amazon Athena Cara Menggunakan AWS Glue Crawler dengan Amazon Athena Apr 09, 2025 pm 03:09 PM

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.

Apakah kesan kegigihan redis pada ingatan? Apakah kesan kegigihan redis pada ingatan? Apr 10, 2025 pm 02:15 PM

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: meneroka aplikasi utamanya Python: meneroka aplikasi utamanya Apr 10, 2025 am 09:41 AM

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.

Bagaimana cara menetapkan saiz memori Redis mengikut keperluan perniagaan? Bagaimana cara menetapkan saiz memori Redis mengikut keperluan perniagaan? Apr 10, 2025 pm 02:18 PM

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.

Apa yang perlu dilakukan jika penggunaan memori redis terlalu tinggi? Apa yang perlu dilakukan jika penggunaan memori redis terlalu tinggi? Apr 10, 2025 pm 02:21 PM

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.

Cara Putuskan Penggunaan Pangkalan Data SQL Cara Putuskan Penggunaan Pangkalan Data SQL Apr 10, 2025 am 09:57 AM

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.

Rancangan Python 2 jam: Pendekatan yang realistik Rancangan Python 2 jam: Pendekatan yang realistik Apr 11, 2025 am 12:04 AM

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

Cara melihat versi pelayan Redis Cara melihat versi pelayan Redis Apr 10, 2025 pm 01:27 PM

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.

See all articles