mongodb怎么用json

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。

假设有一个 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 格式进行数据交互。只要注意格式规范(如键用双引号),就能顺利工作。