Dieser Artikel stellt Ihnen hauptsächlich die relevanten Informationen zum erweiterten dynamischen Felddesign von MongoDB vor. Die Einführung im Artikel ist sehr detailliert und bietet einen gewissen Referenz- und Lernwert für alle Freunde, die sie benötigen Lasst uns gemeinsam lernen.
Dieser Artikel stellt hauptsächlich relevante Informationen zum dynamischen Felddesign von MongoDB vor. Er wird für alle zum Nachschlagen und Lernen freigegeben. Freunde, die sie benötigen, können einen Blick auf die ausführliche Einführung werfen.
Geeignet für Leser
MongoDB-Entwickler
Grundlegende Anforderungen
Produkt: „Wir möchten bestehenden Formularen eine tolle Funktion hinzufügen, die es Benutzern ermöglicht, die gewünschten Felder hinzuzufügen“
Technisches Ziel Version 1
Speichern dynamischer Formulardaten (neue Felder müssen das Schema nicht ändern)
Lass uns reden Lassen Sie uns zuerst über die von MongoDB unterstützten Indizes sprechen 🎜>
Array
Dokumentindex// 假如我们的文档长这样 { "name": "MongoDB", "age": 5 } // 对age字段建立索引 { "age": 1 }
Es scheint, dass keines der oben genannten Elemente die Funktion des dynamischen Hinzufügens von Feldern erfüllen kann
// 假如我们的文档长成了Object { "person": { "age": 2, "name": "MongoDB" } } //对person.age字段建立索引 { "person.age": 1 }
Programmierer A und Programmierer S führten das folgende Gespräch:Programmierer A: „ Dann müssen wir eine weitere Sammlung hinzufügen, um dynamische Inhalte zu speichern Zukünftige Produkte sagen, dass sie Sortier- und Filterfunktionen hinzufügen werden, wir werden verwirrt sein☹️, pfui ~ Guten Morgen. Wenn ich das weiß, besteht keine Notwendigkeit für MongoDB“ Überprüfen Sie die Anforderungen erneut
// 假如我们的文档长成了数组 { "persons": [ { "name": "MongoDB", age: 5}, { "name": "MySQL", age: 20} ] } //对persons.age字段建立索引 { "persons.age": 1 }
Technische Zielversion2
Felder hinzufügen Gleichzeitig ist auch eine Indizierung möglich
Die Speicherstruktur ist wie folgt:
Achtung!!! Wenn der Benutzer n Felder hinzufügt, wird die Beschreibungssammlung hinzugefügt n Dokumente gleichzeitig
das gleiche
Control
//描述collection { "_id":"描述id", "type":"类型", "text": "订单名称", "default": "Default Name", } // 原本的表单增加字段form用来存储动态数据 { "_id": "", "name": "一个好名字", "form":[ { "_id":"描述_id", "value": 10}, { "_id":"描述_id", "value": "我的好伙伴"}, ] }
Produkt: „Wir müssen Benutzern das Hinzufügen von Dropdown-Boxen und Multi- Auswahlfelder erfordern auch Filtern und Sortieren“
// 比如用户增加了2个字段 // 现在要对字段1进行排序 db.items.find().sort({"form.0.value":1}) // 对字段2进行筛选 db.items.find({"form.1.value":"我的好伙伴"})
Unser Wert wird im Binärformat als 1,2,4,8 gespeichert...Zum Beispiel
Der Benutzer wählt das erste Element des Optionsfelds aus, dann wird 1 gespeichert, das zweite Element wird mit 2 gespeichert und das dritte Element wird mit 4 gespeichert
Der Benutzer wählt mehrere Optionen aus. Wählen Sie das erste Element + das dritte Element aus: Speichern Sie dann 5, (1+4)
Das obige ist der detaillierte Inhalt vonMongoDB Advanced Kapitel Dynamisches Felddesign. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!