MongoDB通过BSON存储数据,但支持jsON格式的插入、查询、导入导出及程序交互。1. 可用insertOne/insertMany插入json文档;2. find()返回类JSON结果;3. mongoimport可导入JSON文件;4. mongoexport能导出为JSON;5. 各语言驱动支持直接使用JSON对象操作数据,整体与JSON兼容良好。

在 MongoDB 中使用 JSON,主要体现在数据的存储、查询和导入导出操作中。mongodb 本身使用的是 BSON(Binary JSON)格式来存储数据,但支持标准 JSON 的大部分语法,因此你可以很方便地用 JSON 格式与数据库交互。
1. 插入 JSON 数据
MongoDB 支持直接插入符合 JSON 格式的文档。你可以在 mongosh(MongoDB Shell)中使用 insertOne() 或 insertMany() 方法插入 JSON 数据。
例如,插入一条用户信息:
db.users.insertOne({ "name": "张三", "age": 28, "email": "zhangsan@example.com", "hobbies": ["读书", "游泳"], "address": { "city": "北京", "district": "朝阳区" } })
说明:虽然写的是 JSON 风格,但在 MongoDB 内部会转换为 BSON 存储,支持更多类型(如 ObjectId、date 等)。
2. 查询返回 JSON 格式数据
使用 find() 查询时,返回的结果在 mongosh 中以类似 JSON 的格式显示。
db.users.find({ "age": { $gt: 25 } })
结果看起来像 JSON,但实际是 BSON 扩展格式。如果需要纯 JSON 输出(比如用于 API),建议在应用层序列化。
3. 从 JSON 文件导入数据
可以使用 mongoimport 工具将 JSON 文件导入 MongoDB。
Easily find JSON paths within JSON objects using our intuitive Json Path Finder
30 假设有一个 users.json 文件:
[ {"name": "李四", "age": 30, "city": "上海"}, {"name": "王五", "age": 25, "city": "深圳"} ]
运行命令导入:
mongoimport --db mydb --collection users --file users.json --jsonArray
注意:—jsonArray 表示文件是一个 JSON 数组。如果是每行一个 JSON 对象(NDJSON),则不用该参数。
4. 导出数据为 JSON
使用 mongoexport 可将数据导出为 JSON 格式。
mongoexport --db mydb --collection users --out users_export.json
输出文件 users_export.json 将包含每条记录作为一个独立的 JSON 对象(每行一个)。
5. 在程序中使用 JSON
大多数编程语言驱动(如 node.js、python PyMongo)都支持将 JSON 对象直接插入 MongoDB。
node.js 示例:
const user = { name: "赵六", age: 32, email: "zhaoliu@example.com" }; await db.collection('users').insertOne(user);
这里的 JS 对象本质上就是 JSON 格式,驱动会自动处理序列化。
基本上就这些。MongoDB 和 JSON 配合非常自然,无论是手动操作还是程序开发,都能轻松使用 JSON 格式进行数据交互。只要注意格式规范(如键用双引号),就能顺利工作。