이 글은 주로 MongoDB고급 동적 필드 디자인 관련 정보를 소개합니다. 글의 소개는 매우 자세하며 필요한 모든 친구가 함께 배울 수 있는 참고 자료와 학습 가치가 있습니다.
이 글은 주로 MongoDB 동적 필드 디자인에 대한 관련 정보를 소개합니다. 모든 사람의 참고와 학습을 위해 공유됩니다. 필요한 친구들은 자세한 소개를 살펴보세요.
독자에게 적합
MongoDB 개발자
기본 요구사항
제품: "우리는 사용자가 원하는 것을 추가할 수 있는 훌륭한 기능을 기존 양식에 추가할 예정입니다. 필드 "
기술 목표 버전 1
저장 동적 양식 데이터(새 필드는 스키마를 수정할 필요가 없음)
우선 어떤 종류의 인덱스가 지원되는지 이야기해 봅시다. mongodb inaryordinary fields index
// 假如我们的文档长这样 { "name": "MongoDB", "age": 5 } // 对age字段建立索引 { "age": 1 }embedded document index
// 假如我们的文档长成了Object { "person": { "age": 2, "name": "MongoDB" } } //对person.age字段建立索引 { "person.age": 1 }array
hocument indexr// 假如我们的文档长成了数组
{
"persons": [
{ "name": "MongoDB", age: 5},
{ "name": "MySQL", age: 20}
]
}
//对persons.age字段建立索引
{
"persons.age": 1
}
는 위의 어느 것도 역동적으로 필드를 추가하는 기능을 달성 할 수없는 것으로 보입니다. 프로그래머 S는 다음과 같은 대화를 나누었습니다.
프로그래머 A: "그러면 동적 콘텐츠를 저장하기 위해 다른 컬렉션을 추가해야 합니다."
요구 사항을 재검토
동적 양식 데이터를 저장하려면
기술 목표 버전2
필드를 추가하고 색인도 생성할 수 있습니다 솔루션
배열을 사용하여 동적 필드 저장
//描述collection { "_id":"描述id", "type":"类型", "text": "订单名称", "default": "Default Name", } // 原本的表单增加字段form用来存储动态数据 { "_id": "", "name": "一个好名字", "form":[ { "_id":"描述_id", "value": 10}, { "_id":"描述_id", "value": "我的好伙伴"}, ] }
// 比如用户增加了2个字段 // 现在要对字段1进行排序 db.items.find().sort({"form.0.value":1}) // 对字段2进行筛选 db.items.find({"form.1.value":"我的好伙伴"})위의 예에서 볼 수 있듯이 사용자가 필드 값을 입력하지 않더라도 모든 Document 양식 아래의 n번째 필드가 동일한 control
계속해서 자세히 살펴보세요.
제품: "사용자가 드롭다운 상자와 다중 선택 상자를 추가할 수 있도록 허용해야 하며 필터링 및 정렬도 필요합니다."
프로그래머: "Fxxx"그러면 이러한 데이터는 어떻게 저장되어야 할까요? ?
우리의 값은 1,2,4,8...
의 이진 형식으로 저장됩니다. 예를 들어
사용자는 다음 항목의 첫 번째 항목을 선택합니다. 다중 선택 상자에서 1이 저장되고, 두 번째 항목이 2로 저장되고, 세 번째 항목이 4로 저장됩니다
사용자가 다중 선택 상자의 첫 번째 항목 + 세 번째 항목을 선택하면 5가 저장됩니다. , (1+4)
MongoDB는 $bitsAllSet, $bitsAnySet, $bitsAllClear, $bitsAnyClear
db.items.aggregate([ { "$match": { "$elemMatch": { "描述id": "id", "value": { $bitsAnySet: [ 1, 5 ] } } }} ])를 포함한 Bitwise 쿼리 연산자 기능을 포함하는 강력한 집계 기능을 제공합니다. 위 내용은 MongoDB 동적 필드 사용의 다양한 측면을 완성합니다. 수요가 많은 디자인
위 내용은 MongoDB 고급 장 동적 필드 디자인의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!