Rumah pangkalan data tutorial mysql MongoDB进阶篇之动态字段设计

MongoDB进阶篇之动态字段设计

May 17, 2018 pm 02:00 PM
mongodb Padang reka bentuk

这篇文章主要给大家介绍了MongoDB进阶之动态字段设计的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。

本文主要介绍的是关于MongoDB动态字段设计的相关资料,分享出来供大家参考学习,需要的朋友们下面来一起看看详细的介绍吧。

适宜读者人群

  • MongoDB开发者

基础需求

产品: "我们要为现有的表单增加一个伟大的功能, 允许用户增加想要的字段"

技术目标version 1

存储动态表单数据(新增字段无需修改Schema)

首先讲一讲MongoDB支持的索引有哪几种

普通字段索引

// 假如我们的文档长这样
{
 "name": "MongoDB",
 "age": 5
}

// 对age字段建立索引
{
 "age": 1
}
Salin selepas log masuk

内嵌文档索引

// 假如我们的文档长成了Object
{
 "person": {
  "age": 2,
  "name": "MongoDB"
 }
}

//对person.age字段建立索引
{
 "person.age": 1
}
Salin selepas log masuk

数组文档索引

// 假如我们的文档长成了数组
{
 "persons": [
  { "name": "MongoDB", age: 5},
  { "name": "MySQL", age: 20}
 ]
}
//对persons.age字段建立索引
{
 "persons.age": 1
}
Salin selepas log masuk

看似上面只有都无法做到动态增加字段的功能

程序员A和程序员S发生如下对话:

  • 程序猿A: "那么我们需要增加另外一个collection来存储动态的内容"

  • 程序猿S: "但MongoDB对关联查询的支持很弱啊, 都没法关联排序, 要是后面产品说要加 排序筛选 的功能我们就懵逼了呀☹️ , 唉~ 早知如此就不用MongoDB了"

再重新审视需求

  • 存储动态表单数据

  • 需要支持筛选和排序

技术目标version2

增加字段同时还要可以索引

解决方案

  • 使用数组来存储动态字段

  • 增加描述collection用来记录用户的表单配置

存储结构如下:

//描述collection 
{
 "_id":"描述id",
 "type":"类型",
 "text": "订单名称",
 "default": "Default Name",
}

// 原本的表单增加字段form用来存储动态数据
{
 "_id": "",
 "name": "一个好名字",
 "form":[
 { "_id":"描述_id", "value": 10},
 { "_id":"描述_id", "value": "我的好伙伴"},
 ]
}
Salin selepas log masuk

注意!!! 当用户增加n个字段时, 描述collection同时增加n个文档

如何查询排序筛选呢

// 比如用户增加了2个字段
// 现在要对字段1进行排序
db.items.find().sort({"form.0.value":1})
// 对字段2进行筛选
db.items.find({"form.1.value":"我的好伙伴"})
Salin selepas log masuk

上面的例子可以看出, 即使用户未填写该字段值, 但我们依旧需要为它进行存储空值, 以保证我们所有的Document的form下第n个字段均为同一个控件, 这样我们就可以对字段进行筛选排序, 并且可索引

继续深入

产品: "我们需要允许用户增加下拉框和多选框, 同样需要筛选排序"

程序猿: "Fxxx"

那么这样的数据应该如何存储呢?

解决方案如下:

我们的value按照1,2,4,8...的二进制方式进行存储


用户选择单选框第一项, 则存1, 第二项则存2, 第三项则存4

用户选择多选框第一项+第三项:则存5, (1+4)

MongoDB为我们提供了强大的Aggregate功能, 其中包含了Bitwise Query Operators 功能, 包含$bitsAllSet ,$bitsAnySet , $bitsAllClear , $bitsAnyClear

db.items.aggregate([
 {
  "$match": {
  "$elemMatch": {
   "描述id": "id",
   "value": { $bitsAnySet: [ 1, 5 ] }
  }
 }}
])
Salin selepas log masuk

以上完成了使用MongoDB动态字段设计的各种需求

Atas ialah kandungan terperinci MongoDB进阶篇之动态字段设计. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan 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)

Honor Magic V3 memperkenalkan teknologi perlindungan mata nyahfokus AI: berkesan mengurangkan perkembangan rabun Honor Magic V3 memperkenalkan teknologi perlindungan mata nyahfokus AI: berkesan mengurangkan perkembangan rabun Jul 18, 2024 am 09:27 AM

Menurut berita pada 12 Julai, siri Honor Magic V3 telah dikeluarkan secara rasmi hari ini, dilengkapi dengan skrin perlindungan mata Honor Vision Soothing Oasis yang baharu Walaupun skrin itu sendiri mempunyai spesifikasi tinggi dan kualiti tinggi, ia juga mempelopori pengenalan perlindungan mata aktif AI teknologi. Dilaporkan bahawa cara tradisional untuk mengurangkan rabun adalah "kaca mata rabun". Kuasa cermin mata rabun diagihkan secara sama rata untuk memastikan kawasan pusat penglihatan diimej pada retina, tetapi kawasan persisian digambarkan di belakang retina. Retina merasakan bahawa imej berada di belakang, menggalakkan arah paksi mata berkembang kemudian, dengan itu mendalamkan darjah. Pada masa ini, salah satu cara utama untuk mengurangkan perkembangan rabun adalah "kanta nyahfokus". Kawasan pusat mempunyai kuasa biasa, dan kawasan persisian diselaraskan melalui partition reka bentuk optik, supaya imej di kawasan persisian jatuh ke dalam. hadapan retina.

Telefon bimbit Honor X60i dijual bermula dari 1,399 yuan: skrin langsung OLED segiempat visual Telefon bimbit Honor X60i dijual bermula dari 1,399 yuan: skrin langsung OLED segiempat visual Jul 29, 2024 pm 08:25 PM

Menurut berita pada 29 Julai, telefon bimbit Honor X60i dijual secara rasmi hari ini, bermula pada 1,399 yuan. Dari segi reka bentuk, telefon bimbit Honor X60i menggunakan reka bentuk skrin lurus dengan lubang di tengah dan sempadan ultra-sempit yang hampir tidak terhad pada keempat-empat sisi, yang meluaskan bidang pandangan. Parameter Honor X60i Paparan: Paparan definisi tinggi 6.7 inci Bateri: Bateri berkapasiti besar 5000mAh Pemproses: Pemproses Dimensity 6080 (TSMC 6nm, 2x2.4G A76+6×2G A55) Sistem: Sistem MagicOS8.0 Ciri-ciri lain: peningkatan isyarat 5G , kapsul pintar, cap jari bawah skrin, dwi MIC, pengurangan hingar, Soal Jawab pengetahuan, keupayaan fotografi: sistem dwi kamera belakang: 50 juta piksel kamera utama, 2 juta piksel kanta tambahan, kanta selfie hadapan: 8 juta piksel, harga: 8GB

Proses susun baru! Xiaomi MIX Fold 4 dilengkapi dengan bateri Jinshajiang 'berbentuk khas tiga dimensi' buat kali pertama Proses susun baru! Xiaomi MIX Fold 4 dilengkapi dengan bateri Jinshajiang 'berbentuk khas tiga dimensi' buat kali pertama Jul 20, 2024 am 03:20 AM

Menurut berita pada 19 Julai, Xiaomi MIX Fold 4, telefon lipat perdana pertama, dikeluarkan secara rasmi malam ini dan dilengkapi dengan "bateri berbentuk khas tiga dimensi" buat kali pertama. Menurut laporan, Xiaomi MIX Fold4 telah mencapai kejayaan besar dalam teknologi bateri dan mereka bentuk "bateri berbentuk khas tiga dimensi" yang inovatif khusus untuk skrin lipat. Peranti skrin lipat tradisional kebanyakannya menggunakan bateri persegi konvensional, yang mempunyai kecekapan penggunaan ruang yang rendah. Untuk menyelesaikan masalah ini, Xiaomi tidak menggunakan sel bateri penggulungan biasa, tetapi membangunkan proses laminasi baharu untuk mencipta bentuk bateri baharu, yang sangat meningkatkan penggunaan ruang. Inovasi Teknologi Bateri Untuk menyusun kepingan elektrod positif dan negatif secara bergilir-gilir dan memastikan pembenaman ion litium yang selamat, Xiaomi telah membangunkan mesin kimpalan ultrasonik dan mesin laminasi baharu untuk meningkatkan ketepatan kimpalan dan pemotongan.

Spesifikasi reka bentuk telefon 100 yuan Xiaomi Redmi 14C didedahkan, akan dikeluarkan pada 31 Ogos Spesifikasi reka bentuk telefon 100 yuan Xiaomi Redmi 14C didedahkan, akan dikeluarkan pada 31 Ogos Aug 23, 2024 pm 09:31 PM

Jenama Redmi Xiaomi sedang bersiap sedia untuk menambah telefon bajet lain pada portfolionya - Redmi 14C. Peranti itu disahkan akan dikeluarkan di Vietnam pada 31 Ogos. Bagaimanapun, menjelang pelancaran, spesifikasi telefon itu telah didedahkan melalui peruncit Vietnam. Redmi14CR Redmi sering membawakan reka bentuk baharu dalam siri baharu, dan Redmi14C tidak terkecuali. Telefon ini mempunyai modul kamera bulat besar di bahagian belakang, yang sama sekali berbeza daripada reka bentuk pendahulunya. Versi warna biru juga menggunakan reka bentuk kecerunan untuk menjadikannya kelihatan lebih mewah. Walau bagaimanapun, Redmi14C sebenarnya adalah telefon bimbit yang menjimatkan. Modul kamera terdiri daripada empat cincin; satu menempatkan sensor 50 megapiksel utama, dan satu lagi mungkin menempatkan kamera untuk maklumat kedalaman.

Honor Magic V3 berjaya mencabar cucian pantas 15 minit mesin basuh muatan hadapan: satu-satunya peranti lipat yang telah lulus pensijilan kalis air 2.5 meter Honor Magic V3 berjaya mencabar cucian pantas 15 minit mesin basuh muatan hadapan: satu-satunya peranti lipat yang telah lulus pensijilan kalis air 2.5 meter Jul 18, 2024 pm 01:58 PM

Menurut berita pada 12 Julai, Honor Magic V3 telah dikeluarkan secara rasmi hari ini, menjadikan ketebalan telefon bimbit skrin lipat kepada 9.2 mm. Perlu dinyatakan bahawa semasa mengejar kenipisan dan kecerahan yang muktamad, Honor MagicV3 juga mencapai prestasi kalis air yang menerajui industri melalui penggunaan teknologi termaju. Terima kasih kepada teknologi pengisian ketepatan 10 mikron, telefon ini bukan sahaja mencapai standard kalis air IPX8, tetapi juga mengekalkan kepekaan sentuhan walaupun dalam persekitaran lembap, memberikan pengguna pengalaman tanpa kebimbangan. Pada sidang akhbar itu, Honor menjalankan percubaan berani dan terus meletakkan MagicV3 dalam mesin basuh dram untuk ujian cucian cepat selama 15 minit Hasilnya menakjubkan - bukan sahaja telefon itu selamat, tetapi ia juga menunjukkan keupayaan kalis airnya yang sangat baik. kemuliaan

Telefon mudah alih 5G terkecil di dunia dikeluarkan secara rasmi: skrin kecil 5.05 inci dengan 100 juta kamera utama Telefon mudah alih 5G terkecil di dunia dikeluarkan secara rasmi: skrin kecil 5.05 inci dengan 100 juta kamera utama Jul 19, 2024 pm 09:10 PM

Menurut laporan media pada 19 Julai, pengeluar asing Unihertz Jelly Max melancarkan telefon mudah alih 5G terkecil di dunia, berharga AS$199. Dilaporkan bahawa sambil mengekalkan kemudahalihan muktamad, JellyMax dilengkapi dengan paparan HD+LCD 5.05-inci dengan reka bentuk tebuk lubang dan resolusi skrin 720x1520 piksel. Perlu diingat bahawa beratnya adalah kira-kira 180 gram, yang lebih ringan daripada iPhone 13 mini (140 gram). Konfigurasi perkakasan MediaTek Dimensity 7300 pemproses berprestasi tinggi 12GBLPDDR5x memori berkelajuan tinggi 256GBUFS3.1 storan besar-besaran Sistem operasi Android14 sistem kamera 100MP kamera utama 8MP kanta telefoto 32

Bermula dari 449 yuan, gimbal telefon pintar Zhiyun CQ5 dikeluarkan: menyokong kawalan suara Bermula dari 449 yuan, gimbal telefon pintar Zhiyun CQ5 dikeluarkan: menyokong kawalan suara Jul 31, 2024 pm 10:37 PM

Menurut berita pada 31 Julai, Zhiyun hari ini melancarkan gimbal telefon pintar Shuiqu CQ5, yang menyokong rakaman telefon mudah alih dan kawalan suara Versi standard berharga 449 yuan, dan versi susulan berharga 599 yuan. Salah satu sorotan Shuiqu CQ5 ialah pembantu suara lanjutan terbina dalam "Xiao Zhi", yang menjadikan operasi penangkapan lebih mudah berbanding sebelum ini. Pengguna hanya memerlukan kata laluan mudah untuk bertukar dengan lancar antara mod skrin mendatar dan menegak, serta-merta memulakan fungsi rakaman, malah mengawal pengatup dari jauh dengan suara, supaya menangkap ilham tidak lagi terhad kepada operasi manual. Apa yang lebih mengejutkan ialah julat pengecaman suaranya boleh mencapai kira-kira 3 meter, memastikan tindak balas yang tepat dalam kebanyakan senario penangkapan. 1. Shuiqu CQ5 dilengkapi dengan rod sambungan yang boleh ditarik balik untuk menghadapi pelbagai sudut penangkapan secara fleksibel. Modul penjejakan AI magnetik pilihan untuk pengenalan pintar

Xiaomi MIX Fold 4 ialah seni bina semua karbon pertama: rintangan hentaman meningkat kepada 300% Xiaomi MIX Fold 4 ialah seni bina semua karbon pertama: rintangan hentaman meningkat kepada 300% Jul 19, 2024 pm 09:47 PM

Menurut berita pada 19 Julai, Xiaomi MIX Fold 4 tiba seperti yang dijadualkan malam ini. Ia seringan 226g, nipis 4.59mm pada satu sisi, dan setipis 9.47mm apabila dilipat. Menurut laporan, Xiaomi MIX Fold 4 ialah seni bina semua karbon pertama Plat terapung kawasan penggunaan gentian karbon yang besar, lapisan skrin dan petak bateri papan tengah semuanya diperbuat daripada bahan gentian karbon berkekuatan tinggi T800H, dan kekuatan hentakan. meningkat sebanyak 300%. Bahan ini mempunyai kekuatan tegangan ultra tinggi 5500MPa, iaitu 13 kali ganda daripada aloi aluminium 6M42 dan 25 kali ganda daripada aloi aluminium biasa. Di bawah keperluan prestasi mekanikal yang sama, beratnya hanya 1/15 daripada aloi aluminium 6M42. Pilihan ini bukan sahaja mengurangkan berat peranti dengan ketara, tetapi juga meningkatkan kekuatan keseluruhannya dengan ketara. 1. Mengguna pakai teknologi "tali pinggang sehala" termaju

See all articles