MongoDB——基本规则、数据类型

本文详细介绍了数据库、集合及文档键的基本规则,包括命名规范、数据类型等,并提供了具体示例。
数据库建立基本规则
序号注意事项
1符合UTF-8标准的字符串
2不能是空字符串""
3不得含有" "(空格) 、.、$、/、\、\0(空字符)
4区分大小写,建议全部小写
5名称最多为64字节
6不得使用保留的数据库名,如admin、local、config、test
集合名称定义规则
序号注意事项
1符合UTF-8标准的字符串
2不能是空字符串,如""
3不得含有$、\0(空字符)
4不能以"system."开头,这是为系统集合保留的前缀
5用"."来组织子接,如book.name
文档的键的定义规则
序号注意事项
1符合UTF-8标准的字符串
2不能包含\0字符(空字符),这个字符表示键的结束
3".“和”$"是被保留的,只能在特定环境下用
4区分类型(如字符串、整数等),同时也区分大小写
5键不能重复,在一条文档里其唯一的作用
文档值数据类型

虽然MongoDB在使用时无须直接定义数据存储结构,也无须明确指定文档的数据类型,但是它也存在数据类型概念,在实际业务环境下必须能正确区分存储数据的类型。

序号数据类型描述举例
1null标识空值或未定义的对象{"otherbook":null}
2布尔值真或假(true或者false){"allowing":true}
332位整数shell不支持该类型,默认会转换成64位浮点数,也可以使用NumerInt类{"number":NumberInt("3")}
464位整数shell不支持该类型,默认会转换成64位浮点数,也可以使用NumberLong类{"longnumber":NumberLnog("3")}
564位浮点数shell中的数字就是这一种类型{"price":23.5}
6字符串UTF-8字符串{"bookname":"资治通鉴"}
7符号shell不支持。它会将数据库中的符号类型的数据自动转换成字符串
8对象id文档的12字节的唯一id,保证一条文档记录的唯一性。可以在服务器端自动生成,也可以在代码端生成,允许程序员自行指定id值{"id":ObjectId()}
9日期从标准纪元开始的毫秒数{"saledate":new Date()}
10正则表达式文档中可以包含正则表达式,遵循JavaScript语法"foo":/foobar/i
11代码文档中可以包含JavaScript代码{"nodeprocess":function(){}}
12unefined未定义{Explain":undefined}
13数组值的集合或者列表{"books":["资治通鉴","说文解字"]}
14内嵌文档JSON、XML等文档本身{bookname:"资治通鉴",bookprice:33.2,adddate:2017-10-1,allow:true,baseinf:{ISBN:13223234,press:"清华大学出版社"}}
### MongoDB 文档存储中的字段和数据类型的灵活性 MongoDB 是一种面向文档的 NoSQL 数据库,具有高度灵活的数据模型。在同一个集合(collection)中,不同文档可以拥有完全不同的结构[^1]。这意味着: - **字段名称不必相同**:即使是在同一集合内的多个文档之间,也可以存在部分文档包含某些字段而其他文档不包含这些字段的情况。 - **字段类型可变**:在同一集合的不同文档中,相同的字段名甚至可以有不同的数据类型。例如,“age”字段可以在一个文档中是整数类型 (NumberInt),而在另一个文档中则是字符串类型 (String)[^2]。 #### 示例展示字段和数据类型的多样性 以下是一个简单的例子来说明这一点: ```javascript // 插入两个文档到名为 users 的集合中 db.users.insertMany([ { name: "Alice", age: 30, hobbies: ["reading", "swimming"] }, { name: "Bob", age: "thirty", address: { city: "New York" } } ]); ``` 在这个例子中可以看到: - “age”字段在 Alice 的记录里是数值型,在 Bob 的记录里却是字符型; - 只有 Alice 的文档中有“hobbies”数组字段; - Bob 的文档引入了一个新的嵌套对象字段“address”。 通过这种方式可以看出,MongoDB 提供了极大的自由度去处理非规范化或者半结构化数据集[^3]。 #### 动态验证与模式控制 尽管如此高的灵活性带来了便利,但也可能导致意外错误或难以维护的数据一致性问题。为此,MongoDB 支持 Schema Validation(模式校验),允许用户定义一组规则用于约束新插入/更新的文档必须遵循一定的格式标准。如果启用了 schema validation,则可以根据需要强制执行更加严格的字段命名约定及预期的数据类型限制。 --- ### 结论 综上所述,MongoDB 允许在一个集合内保存具备异构特性的文档,即它们能够携带各自独特的属性组合及其关联值的形式——无论是从字段的存在与否还是背后所依附的具体类别而言皆然。不过出于长期稳定性和兼容性考量,建议适时运用适当的技术手段加以管控以防失控局面发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值