MongoDB基础语法常见管道操作符
时间: 2025-01-08 12:43:01 浏览: 5
### MongoDB 基础语法
MongoDB 是一种面向文档的数据库程序,其设计目标是在提供可扩展性和高性能的同时保持传统数据库的功能。对于基本的操作而言,CRUD (Create, Read, Update, Delete) 功能是最核心的部分。
#### 创建和插入数据
为了向集合中插入一条或多条记录,可以使用 `insertOne` 和 `insertMany` 方法:
```javascript
db.collection.insertOne(
{
title: 'NoSQL Database',
description: 'A guide to NoSQL databases'
}
);
```
#### 查询数据
查询操作可以通过 `find` 来实现,它允许通过条件来筛选特定的数据集。例如查找所有点赞数超过700条评论:
```javascript
db.comment.find({likenum: {$gt: NumberInt(700)}})[^5];
```
#### 更新数据
更新现有文档的内容可通过 `updateOne`, `updateMany` 或者 `replaceOne` 实现。比如更新某个书籍的信息如下所示:
```javascript
db.books.updateOne(
{title: "Old Title"},
{$set: {"title": "New Updated Title"}}
);
```
#### 删除数据
移除单个或多个匹配项,则分别调用 `deleteOne` 及 `deleteMany` 函数完成此目的。
---
### 管道操作符
管道操作符主要用于构建复杂的聚合表达式,在处理大量数据分析场景下非常有用。以下是几种常用到的操作符介绍及其应用实例。
#### `$project`
调整输出字段的选择情况,能够简化最终呈现给用户的视图结构。当只需要显示作者姓名而不关心其他信息时,可以用这种方式提取所需部分[^4]:
```javascript
db.books.aggregate([
{$project: {_id: 0, "author.name": 1}}
]);
```
#### `$match`
作为过滤器作用于整个流程之前,确保只有满足一定标准的数据才会被进一步加工处理。假设想要找出价格低于20元的商品列表就可以这样写:
```javascript
db.products.aggregate([
{$match: {price: {$lt: 20}}}
]);
```
#### `$group`
按照某些共同特征对原始资料进行分类汇总统计。如果想知道各类型图书的数量分布状况的话,那么应该这样做:
```javascript
db.books.aggregate([
{$group: {_id: "$type", count: {$sum: 1}}}
]);
```
#### `$sort`
按升序/降序排列结果集中的元素顺序。要获得销量最高的前五名产品排行榜,代码片段可能是这样的形式:
```javascript
db.sales.aggregate([
{$sort: {quantity_sold: -1}},
{$limit: 5}
]);
```
#### `$skip` 和 `$limit`
这两个命令通常一起配合着用来做分页展示用途。比如说每次加载十条新闻资讯并跳过前面已经看过的内容:
```javascript
db.news.aggregate([
{$skip: 10},
{$limit: 10}
]);
```
#### `$unwind`
将含有数组类型的属性展开成独立的对象序列以便后续更细致地分析每一个成员特性。考虑一个订单表里有购买商品清单的情况,此时就需要利用该功能将其拆解开来查看具体构成明细:
```javascript
db.orders.aggregate([
{$unwind: '$items'}
]);
```
阅读全文