文档数据格式:BSON
在此页面上
Overview
在本指南中,您可以了解 BSON 数据格式,MongoDB 如何使用该格式,以及如何独立于 MongoDB Java 驱动程序安装 BSON 库。
BSON 数据格式
BSON 或二进制 JSON 是 MongoDB 用来组织和存储数据的数据格式。此数据格式包括所有 JSON 数据结构类型,并增加了对日期、不同大小的整数、ObjectId 和二进制数据等类型的支持。有关支持类型的完整列表,请参阅 BSON 类型服务器手册页面。
二进制格式不适合人类阅读,但您可以使用 Java BSON 库将其转换为 JSON 表示形式。有关这些格式之间关系的更多信息,请参阅我们关于 JSON 和 BSON 主题的文章。
MongoDB 和 BSON
MongoDB Java 驱动程序,它使用 BSON 库并允许使用可实现 BSON 接口的对象类型之一来处理 BSON 数据,其中包括:
文档(BSON 库包)
BsonDocument(BSON 库包)
RawbsonDocument(BSON 库包)
jsonObject (BSON 库包)
BasicDBObject(Java 驱动程序包)
有关使用这些Realm 对象类型的更多信息,请参阅我们的文档指南。
安装 BSON 库
这些说明介绍如何将 BSON 库作为依赖项添加到您的项目中。如果您将 MongoDB Java 驱动程序作为依赖项添加到项目中,则可以跳过此步骤,因为 BSON 库已作为驱动程序的必需依赖项包含在其中。有关如何将 MongoDB Java 驱动程序作为依赖项添加到项目中的说明,请参阅我们快速入门指南中的驱动程序安装部分。
建议您使用 Maven 或 Gradle 来构建自动化工具,从而管理项目的依赖项。从以下标签页进行选择,从而查看该工具的依赖项声明:
以下代码片段显示 pom.xml
文件的 dependencies
部分中的依赖声明。
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>bson</artifactId> <version>5.4.0</version> </dependency> </dependencies>
以下代码片段显示 build.gradle
文件的 dependencies
对象中的依赖声明。
dependencies { compile 'org.mongodb:bson:5.4.0' }
如果您未使用上述工具之一,则可以通过直接从 sonatype 存储库下载 JAR 文件将其包含在项目中。
常见问题解答
This section answers questions that may arise when using the BSON data format.
如何防止出现“IllegalArgumentException: Invalid BSON 字段 name”(IllegalArgumentException: Invalid BSON 字段 name)错误?
Your application might throw this exception if you pass an incorrectly formatted document to an operation and you are using Java driver v4.7 or earlier.
注意
在驱动程序版本 v4.8 及更高版本中,此错误消息已替换为包含有关格式不正确内容的更具体详细信息的错误消息。
例如,当您调用更新操作并错误地省略更新操作符时,驱动程序会抛出此错误,如以下代码示例所示:
// incorrectly formatted update document collection.updateOne( new Document().append("name", "fizz"), new Document().append("name", "buzz") );
To avoid this error, use the builder class for the appropriate operation. The driver offers builder classes to create syntactically correct BSON for MongoDB operations. The preceding example can be correctly expressed using the builder classes, as shown in the following code example:
// Builder class imports import static com.mongodb.client.model.Filters.*; import static com.mongodb.client.model.Updates.*; // ... collection.updateOne(eq("name", "fizz"), set("name", "buzz"));
To learn more about the available builders classes, see the 构建器 guide.