Jadual Kandungan
定义文档的模式
文档字段
文档之间引用关系
一对多的关系
引用对象的删除操作
索引
Rumah pangkalan data tutorial mysql mongoengine教程(2)文档模式

mongoengine教程(2)文档模式

Jun 07, 2016 pm 04:34 PM
mongodb satu Tutorial dokumen model

在MongoDB中一个文档(document)与关系型数据库中的一行(row)相似;文档保存在集合(collection)中,行保存在表(table)中。 定义文档的模式 与django类似,要定义一个文档模式只需要创建一个类继承自 Document,并添加一些 Field 对象。 from mongoengine impo

在MongoDB中一个文档(document)与关系型数据库中的一行(row)相似;文档保存在集合(collection)中,行保存在表(table)中。

定义文档的模式

与django类似,要定义一个文档模式只需要创建一个类继承自 Document,并添加一些 Field 对象。

from mongoengine import *
import datetime
class Page(Document):
    title = StringField(max_length=200, required=True)
    date_modified = DateTimeField(default=datetime.datetime.now)
Salin selepas log masuk

如上定义了一个文档模式具有 title和date_modified 两个字段。

同时MongoDB本身就是无模式的,因此我们还可以创建动态的文档模式。它可以在添加数据时为不同的数据设置不同的字段。

class Page(DynamicDocument):
    title = StringField(max_length=200, required=True)
Salin selepas log masuk

添加数据:

page = Page(title='Using MongoEngine')
page.tags = ['mongodb', 'mongoengine']
page.save()
Salin selepas log masuk

文档字段

文档字段(Field)不是必需的,但是使用它来进行数据验证、设置默认值等操作会比较方便。

MongoEngine提供了如下这些类型的Field:

  • BinaryField
  • BooleanField
  • ComplexDateTimeField
  • DateTimeField
  • DecimalField
  • DictField
  • DynamicField
  • EmailField
  • EmbeddedDocumentField
  • FileField
  • FloatField
  • GenericEmbeddedDocumentField
  • GenericReferenceField
  • GeoPointField
  • ImageField
  • IntField
  • ListField
  • MapField
  • ObjectIdField
  • ReferenceField
  • SequenceField
  • SortedListField
  • StringField
  • URLField
  • UUIDField

文档之间引用关系

在关系型数据库中多个表可以使用外键进行关联。然而MongoDB是无模式的,因此想要达到这样的效果就这能在应用程序中自己手动的进行关联了。

不过还好,使用MongoEngine的ReferenceField可以很方便的实现。

class User(Document):
    name = StringField()
class Page(Document):
    content = StringField()
    author = ReferenceField(User)
john = User(name="John Smith")
john.save()
post = Page(content="Test Page")
post.author = john
post.save()
Salin selepas log masuk

一对多的关系

对于一对多的关系可以使用ListField来保存一个ReferenceField列表。在进行查询操作是需要传入一个实例对象。

class User(Document):
    name = StringField()
class Page(Document):
    content = StringField()
    authors = ListField(ReferenceField(User))
bob = User(name="Bob Jones").save()
john = User(name="John Smith").save()
Page(content="Test Page", authors=[bob, john]).save()
Page(content="Another Page", authors=[john]).save()
# Find all pages Bob authored
Page.objects(authors__in=[bob])
Salin selepas log masuk

引用对象的删除操作

MongoDB默认不会检查数据的完整性,因此在删除一个对象是就需要自己手动的处理引用了该对象的其他对象。

同样的MongoEngine也提供了一样的功能。ReferenceField有一个 reverse_delete_rule 参数可以进行设置。它的取值如下:

  • mongoengine.DO_NOTHING:默认就是这个值,它不会进行任何操作。
  • mongoengine.DENY:如果该对象还被其他对象引用,则拒绝删除。
  • mongoengine.NULLIFY:将其他对象对该对象的引用字段设为null。
  • mongoengine.CASCADE:将引用了该对象的其他对象也删除掉。
  • mongoengine.PULL:移除对该对象的引用。

索引

与django的Model相似,MongoEngine的Document也可以在meta属性中设置索引。

class Page(Document):
    title = StringField()
    rating = StringField()
    meta = {
        'indexes': ['title', ('title', '-rating')]
    }
Salin selepas log masuk

meta中的indexes可以是一个列表,也可以是一个字典。

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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

Tutorial Bootstrap Lanjutan: Menguasai Penyesuaian & Komponen Tutorial Bootstrap Lanjutan: Menguasai Penyesuaian & Komponen Apr 04, 2025 am 12:04 AM

Bagaimana untuk menguasai penyesuaian bootstrap dan penggunaan komponen termasuk: 1. Gunakan pembolehubah CSS dan preprocessor SASS untuk penyesuaian gaya; 2. Memahami dan mengubahsuai struktur dan tingkah laku komponen. Melalui kaedah ini, antara muka pengguna yang unik boleh dibuat untuk meningkatkan respons dan pengalaman pengguna laman web.

Cara mengkonfigurasi pengembangan automatik MongoDB pada Debian Cara mengkonfigurasi pengembangan automatik MongoDB pada Debian Apr 02, 2025 am 07:36 AM

Artikel ini memperkenalkan cara mengkonfigurasi MongoDB pada sistem Debian untuk mencapai pengembangan automatik. Langkah -langkah utama termasuk menubuhkan set replika MongoDB dan pemantauan ruang cakera. 1. Pemasangan MongoDB Pertama, pastikan MongoDB dipasang pada sistem Debian. Pasang menggunakan arahan berikut: SudoaptDateSudoaptInstall-ImongoDB-Org 2. Mengkonfigurasi set replika replika MongoDB MongoDB Set memastikan ketersediaan dan kelebihan data yang tinggi, yang merupakan asas untuk mencapai pengembangan kapasiti automatik. Mula MongoDB Service: sudosystemctlstartmongodsudosys

Bagaimana cara memindahkan duit syiling ke Binance? Bagaimana untuk menyebutkan aset crypto di HTX ke platform Binance? Bagaimana cara memindahkan duit syiling ke Binance? Bagaimana untuk menyebutkan aset crypto di HTX ke platform Binance? Mar 03, 2025 pm 08:51 PM

Huobi ke Panduan Pemindahan Binance: Selamat dan mudah memindahkan aset crypto anda Banyak pelabur menggunakan Huobi dan Binance pada masa yang sama. Artikel ini akan membimbing anda bagaimana untuk memindahkan aset crypto dengan selamat di Huobi (HTX), seperti Trump dan USDT, ke platform Binance. Binance adalah popular untuk keselamatan yang tinggi, mata wang yang kaya dan pasangan perdagangan, dan jumlah dagangan terkemuka di dunia. Kelebihan Binance Exchange: Jumlah dagangan nombor satu di dunia, menyumbang 50% daripada pasaran global; Tutorial ini akan mengambil Trump dan USDT sebagai contoh

Cara Memastikan Ketersediaan MongoDB Tinggi di Debian Cara Memastikan Ketersediaan MongoDB Tinggi di Debian Apr 02, 2025 am 07:21 AM

Artikel ini menerangkan cara membina pangkalan data MongoDB yang sangat tersedia pada sistem Debian. Kami akan meneroka pelbagai cara untuk memastikan keselamatan data dan perkhidmatan terus beroperasi. Strategi Utama: Replicaset: Replicaset: Gunakan replika untuk mencapai redundansi data dan failover automatik. Apabila nod induk gagal, set replika secara automatik akan memilih nod induk baru untuk memastikan ketersediaan perkhidmatan yang berterusan. Sandaran dan Pemulihan Data: Secara kerap Gunakan perintah Mongodump untuk membuat sandaran pangkalan data dan merumuskan strategi pemulihan yang berkesan untuk menangani risiko kehilangan data. Pemantauan dan penggera: Menyebarkan alat pemantauan (seperti Prometheus, Grafana) untuk memantau status MongoDB dalam masa nyata, dan

Kaedah Navicat untuk melihat kata laluan pangkalan data MongoDB Kaedah Navicat untuk melihat kata laluan pangkalan data MongoDB Apr 08, 2025 pm 09:39 PM

Tidak mustahil untuk melihat kata laluan MongoDB secara langsung melalui Navicat kerana ia disimpan sebagai nilai hash. Cara mendapatkan kata laluan yang hilang: 1. Tetapkan semula kata laluan; 2. Periksa fail konfigurasi (mungkin mengandungi nilai hash); 3. Semak Kod (boleh kata laluan Hardcode).

Apa itu Binance C2C? Apakah risiko? Adakah selamat? Tutorial Binance C2C Duit syiling membeli dan menjual duit syiling Apa itu Binance C2C? Apakah risiko? Adakah selamat? Tutorial Binance C2C Duit syiling membeli dan menjual duit syiling Mar 05, 2025 pm 04:48 PM

Panduan Perdagangan Binance C2C: Cara yang selamat dan mudah untuk mendepositkan dan mengeluarkan wang dalam cryptocurrency. Apa itu Binance C2C? Binance C2C adalah perkhidmatan perdagangan cryptocurrency pengguna kepada pengguna yang disediakan oleh platform Binance, menyediakan pengguna dengan saluran pertukaran mata wang cryptocurrency dan fiat yang mudah. Dilancarkan pada tahun 2019, perkhidmatan ini menyokong pelbagai kriptografi dan transaksi mata wang fiat melalui model dagangan peer-to-peer, dan menyediakan peningkatan keselamatan dan pelbagai ciri. Berbanding dengan perdagangan OTC tradisional, platform Binance C2C mengesahkan kedua -dua pihak kepada transaksi dan memberikan sokongan lengkap.

Bagaimana untuk mengambil bahagian dalam Binance Hodler Airdrop? Tutorial mengenai cara mengambil bahagian dalam Binance Hodler Airdrop Bagaimana untuk mengambil bahagian dalam Binance Hodler Airdrop? Tutorial mengenai cara mengambil bahagian dalam Binance Hodler Airdrop Mar 05, 2025 pm 04:39 PM

Binance Hodl Airdrop Guide: Dapatkan Token Percuma Dengan Mudah! Binance telah melancarkan mekanisme udara baru - Binance Hodl Airdrop, yang membolehkan anda mendapatkan udara duit syiling baru rawak dengan hanya memegang produk pendapatan BNB! Artikel ini akan menerangkan Binance Hodl Airdrop secara terperinci, termasuk pertanyaan sejarah, langkah penyertaan dan penilaian risiko. Apakah Airdrop Binance Hodl? Binance HODL Airdrop adalah mata wang yang berkala mata wang baru, dan menggunakan mekanisme "snapshot mundur" untuk mengira pegangan dan ganjaran udara produk pembuatan mata wang BNB. Anda hanya perlu memegang produk pendapatan semasa atau biasa BNB dalam tempoh masa tertentu sebelum pengumuman acara untuk menerima ganjaran mata wang baru dari Binance. Harus diingat bahawa apabila anda melihat pengumuman AirDrop, peluang untuk mengambil bahagian adalah deadlined kerana sistem telah menyelesaikan snapshot. Perlu mengambil bahagian

Pangkalan Data MongoDB dan Relasi: Perbandingan Komprehensif Pangkalan Data MongoDB dan Relasi: Perbandingan Komprehensif Apr 08, 2025 pm 06:30 PM

MONGODB dan Pangkalan Data Relasi: Perbandingan mendalam Artikel ini akan meneroka dengan mendalam perbezaan antara pangkalan data NoSQL MongoDB dan pangkalan data hubungan tradisional (seperti MySQL dan SQLServer). Pangkalan data relasi menggunakan struktur jadual baris dan lajur untuk menganjurkan data, manakala MongoDB menggunakan model berorientasikan dokumen yang fleksibel untuk memenuhi keperluan aplikasi moden. Terutamanya membezakan struktur data: pangkalan data relasi menggunakan jadual skema yang telah ditetapkan untuk menyimpan data, dan hubungan antara jadual ditubuhkan melalui kunci utama dan kunci asing; MongoDB menggunakan dokumen BSON seperti JSON untuk menyimpannya dalam koleksi, dan setiap struktur dokumen boleh diubah secara bebas untuk mencapai reka bentuk bebas corak. Reka bentuk seni bina: pangkalan data relasi perlu skema tetap yang telah ditetapkan; MongoDB menyokong

See all articles