未验证 提交 68589d1d 编写于 作者: W wanganxp 提交者: GitHub

Update cf-database.md

上级 85fb6a1e
......@@ -32,7 +32,7 @@ const collection = db.collection('user');
### 记录 Record / Document
通过 `db.collection(collectionName).doc(docId)` 可以获取指定集合上指定 id 的记录的引用,在记录上可以进行以下操作
通过 `db.collection(collectionName).doc(docId)` 可以获取指定集合上指定 _id 的记录的引用,在记录上可以进行以下操作
| 接口| 说明 | |
| ----| ------|---- |
......@@ -41,6 +41,9 @@ const collection = db.collection('user');
| | remove| 删除记录(触发请求) |
| 读 | get | 获取记录(触发请求) |
doc(docId)方法的参数只能是字符串,即数据库默认的_id字段。
如需要匹配多个`_id`的记录,应使用where方法。可以在where方法里用in指令匹配一个包含`_id`的数组。
### 查询筛选指令 Query Command
......@@ -102,7 +105,7 @@ Date 类型用于表示时间,精确到毫秒,可以用 JavaScript 内置 Da
```js
// 服务端当前时间
new db.serverDate()
new db.serverDate()
// 在云函数内使用new Date()和new db.serverDate()效果一样
```
......@@ -110,7 +113,7 @@ new db.serverDate()
//服务端当前时间加1S
new db.serverDate({
offset: 1000
})
})
// 在云函数内使用new Date(Date.now() + 1000)和上面的用法效果一样
```
......@@ -219,8 +222,8 @@ limit,即返回记录的最大数量,默认值为100,也就是不设置lim
设置limit有最大值,腾讯云限制为最大1000条,阿里云限制为最大500条。
如需查询更多数据,需要分页多次查询。
如需查询更多数据,需要分页多次查询。
如果使用clientDB传入getTree参数以返回树形数据也受上面的规则限制,不过此时limit方法仅对根节点生效(大量数据建议使用分层加载,不要使用getTree一次返回所有数据)
**get响应参数**
......@@ -431,11 +434,11 @@ collection.field()
```js
collection.field({ 'age': true }) //只返回age字段,其他字段不返回
```
**注意**
- field内指定是否返回某字段时,不可混用true/false。即{'a': true, 'b': false}是一种错误的参数格式
- 只有使用{ '_id': false }明确指定不要返回_id时才会不返回_id字段,否则_id字段一定会返回。
**注意**
- field内指定是否返回某字段时,不可混用true/false。即{'a': true, 'b': false}是一种错误的参数格式
- 只有使用{ '_id': false }明确指定不要返回_id时才会不返回_id字段,否则_id字段一定会返回。
### 查询指令
......@@ -888,131 +891,131 @@ db.collection('articles').where({
})
})
```
### 查询数组字段@querywitharr
假设数据表class内有以下数据,可以使用下面两种方式查询数组内包含指定值
```js
{
"_id": "1",
"students": ["li","wang"]
}
{
"_id": "2",
"students": ["wang","li"]
}
{
"_id": "3",
"students": ["zhao","qian"]
}
```
#### 指定下标查询
```js
### 查询数组字段@querywitharr
假设数据表class内有以下数据,可以使用下面两种方式查询数组内包含指定值
```js
{
"_id": "1",
"students": ["li","wang"]
}
{
"_id": "2",
"students": ["wang","li"]
}
{
"_id": "3",
"students": ["zhao","qian"]
}
```
#### 指定下标查询
```js
const index = 1
const res = await db.collection('class').where({
['students.' + index]: 'wang'
})
const res = await db.collection('class').where({
['students.' + index]: 'wang'
})
.get()
```
```
```js
// 查询结果如下
{
{
data: [{
"_id": "1",
"students": ["li","wang"]
}]
}]
}
```
#### 不指定下标查询
```
#### 不指定下标查询
```js
const res = await db.collection('class').where({
students: 'wang'
})
const res = await db.collection('class').where({
students: 'wang'
})
.get()
```
```
查询结果如下
查询结果如下
```js
{
{
data: [{
"_id": "1",
"students": ["li","wang"]
},{
"_id": "1",
"students": ["wang","li"]
}]
}
```
#### 数组内是对象
如果将上面class内的数据改为如下形式
```js
{
"_id": "1",
"students": [{
name: "li"
},{
name: "wang"
}]
}
{
"_id": "2",
"students": [{
name: "wang"
},{
name: "li"
}]
}
{
"_id": "3",
"students": [{
name: "zhao"
},{
name: "qian"
}]
}
```
不指定下标查询的写法可以修改为
```js
const res = await db.collection('class').where({
'students.name': 'wang'
})
}]
}
```
#### 数组内是对象
如果将上面class内的数据改为如下形式
```js
{
"_id": "1",
"students": [{
name: "li"
},{
name: "wang"
}]
}
{
"_id": "2",
"students": [{
name: "wang"
},{
name: "li"
}]
}
{
"_id": "3",
"students": [{
name: "zhao"
},{
name: "qian"
}]
}
```
不指定下标查询的写法可以修改为
```js
const res = await db.collection('class').where({
'students.name': 'wang'
})
.get()
```
查询结果如下
```js
{
data: [{
"_id": "1",
"students": [{
name: "li"
},{
name: "wang"
}]
},
{
"_id": "2",
"students": [{
name: "wang"
},{
name: "li"
}]
}]
}
```
```
查询结果如下
```js
{
data: [{
"_id": "1",
"students": [{
name: "li"
},{
name: "wang"
}]
},
{
"_id": "2",
"students": [{
name: "wang"
},{
name: "li"
}]
}]
}
```
## 删除文档
......@@ -1753,8 +1756,8 @@ let res = await db.collection('user').where({
## 事务
事务通常用来在某个数据库操作失败之后进行回滚。
事务通常用来在某个数据库操作失败之后进行回滚。
> 事务因为要锁行,是有时间限制的。从事务开始到事务提交/回滚,时间不可超过10s。
### runTransaction
......@@ -7600,12 +7603,12 @@ let res = await db
##### API 说明
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.dayOfMonth(<日期字段>)
db.command.aggregate.dayOfMonth(<日期字段>)
db.command.aggregate.dayOfMonth({date:<日期字段>,timezone:<时区>})
```
......@@ -7649,13 +7652,13 @@ let res = await db
##### API 说明
**注意:周日是每周的第 1 天**
**注意:周日是每周的第 1 天**
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.dayOfWeek(<日期字段>)
db.command.aggregate.dayOfWeek(<日期字段>)
db.command.aggregate.dayOfWeek({date:<日期字段>,timezone:<时区>})
```
......@@ -7698,14 +7701,14 @@ let res = await db
聚合操作符。返回日期字段对应的天数(一年中的第几天),是一个介于 1 到 366 之间的整数。
##### API 说明
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.dayOfYear(<日期字段>)
db.command.aggregate.dayOfYear({date:<日期字段>,timezone:<时区>})
##### API 说明
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.dayOfYear(<日期字段>)
db.command.aggregate.dayOfYear({date:<日期字段>,timezone:<时区>})
```
##### 示例代码
......@@ -7747,13 +7750,13 @@ let res = await db
##### API 说明
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.hour(<日期字段>)
db.command.aggregate.hour({date:<日期字段>,timezone:<时区>})
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.hour(<日期字段>)
db.command.aggregate.hour({date:<日期字段>,timezone:<时区>})
```
##### 示例代码
......@@ -7794,17 +7797,17 @@ let res = await db
聚合操作符。返回日期字段对应的 ISO 8601 标准的天数(一周中的第几天),是一个介于 1(周一)到 7(周日)之间的整数。
##### API 说明
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.isoDayOfWeek(<日期字段>)
db.command.aggregate.isoDayOfWeek({date:<日期字段>,timezone:<时区>})
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.isoDayOfWeek(<日期字段>)
db.command.aggregate.isoDayOfWeek({date:<日期字段>,timezone:<时区>})
```
##### 示例代码
假设集合 `dates` 有以下文档:
```js
......@@ -7827,7 +7830,7 @@ let res = await db
})
.end()
```
输出如下:
```js
......@@ -7842,21 +7845,21 @@ let res = await db
##### API 说明
根据 ISO 8601 标准,周一到周日视为一周,本年度第一个周四所在的那周,视为本年度的第 1 周。
例如:2016 年 1 月 7 日是那年的第一个周四,那么 2016.01.04(周一)到 2016.01.10(周日) 即为第 1 周。同理,2016 年 1 月 1 日的周数为 53。
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.isoWeek(<日期字段>)
db.command.aggregate.isoWeek({date:<日期字段>,timezone:<时区>})
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.isoWeek(<日期字段>)
db.command.aggregate.isoWeek({date:<日期字段>,timezone:<时区>})
```
##### 示例代码
假设集合 `dates` 有以下文档:
```js
......@@ -7864,7 +7867,7 @@ db.command.aggregate.isoWeek({date:<日期字段>,timezone:<时区>})
"_id": 1,
"date": ISODate("2019-05-14T09:38:51.686Z")
}
```
```
我们使用 `isoWeek()``date` 字段进行投影,获取对应的 ISO 8601 标准的周数(一年中的第几周):
......@@ -7879,7 +7882,7 @@ let res = await db
isoWeek: $.isoWeek('$date')
})
.end()
```
```
输出如下:
......@@ -7894,19 +7897,19 @@ let res = await db
聚合操作符。返回日期字段对应的 ISO 8601 标准的天数(一年中的第几天)。
##### API 说明
此处的“年”以第一周的周一为开始,以最后一周的周日为结束。
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.isoWeekYear(<日期字段>)
db.command.aggregate.isoWeekYear({date:<日期字段>,timezone:<时区>})
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.isoWeekYear(<日期字段>)
db.command.aggregate.isoWeekYear({date:<日期字段>,timezone:<时区>})
```
##### 示例代码
假设集合 `dates` 有以下文档:
```js
......@@ -7914,7 +7917,7 @@ db.command.aggregate.isoWeekYear({date:<日期字段>,timezone:<时区>})
"_id": 1,
"date": ISODate("2019-05-14T09:38:51.686Z")
}
```
```
我们使用 `isoWeekYear()``date` 字段进行投影,获取对应的 ISO 8601 标准的天数(一年中的第几天):
......@@ -7928,7 +7931,7 @@ let res = await db
isoWeekYear: $.isoWeekYear('$date')
})
.end()
```
```
输出如下:
......@@ -7943,17 +7946,17 @@ let res = await db
聚合操作符。返回日期字段对应的毫秒数,是一个介于 0 到 999 之间的整数。
##### API 说明
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.millisecond(<日期字段>)
db.command.aggregate.millisecond({date:<日期字段>,timezone:<时区>})
```
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.millisecond(<日期字段>)
db.command.aggregate.millisecond({date:<日期字段>,timezone:<时区>})
```
##### 示例代码
假设集合 `dates` 有以下文档:
```js
......@@ -7962,7 +7965,7 @@ db.command.aggregate.millisecond({date:<日期字段>,timezone:<时区>})
"date": ISODate("2019-05-14T09:38:51.686Z")
}
```
我们使用 `millisecond()``date` 字段进行投影,获取对应的毫秒数:
```js
......@@ -7975,7 +7978,7 @@ let res = await db
millisecond: $.millisecond('$date'),
})
.end()
```
```
输出如下:
......@@ -7990,17 +7993,17 @@ let res = await db
聚合操作符。返回日期字段对应的分钟数,是一个介于 0 到 59 之间的整数。
##### API 说明
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.minute(<日期字段>)
db.command.aggregate.minute({date:<日期字段>,timezone:<时区>})
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.minute(<日期字段>)
db.command.aggregate.minute({date:<日期字段>,timezone:<时区>})
```
##### 示例代码
假设集合 `dates` 有以下文档:
```js
......@@ -8008,7 +8011,7 @@ db.command.aggregate.minute({date:<日期字段>,timezone:<时区>})
"_id": 1,
"date": ISODate("2019-05-14T09:38:51.686Z")
}
```
```
我们使用 `minute()``date` 字段进行投影,获取对应的分钟数:
......@@ -8022,7 +8025,7 @@ let res = await db
minute: $.minute('$date')
})
.end()
```
```
输出如下:
......@@ -8036,14 +8039,14 @@ let res = await db
聚合操作符。返回日期字段对应的月份,是一个介于 1 到 12 之间的整数。
##### API 说明
##### API 说明
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.month(<日期字段>)
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.month(<日期字段>)
db.command.aggregate.month({date:<日期字段>,timezone:<时区>})
db.command.aggregate.month({date:<日期字段>,timezone:<时区>})
```
##### 示例代码
......@@ -8055,7 +8058,7 @@ db.command.aggregate.month({date:<日期字段>,timezone:<时区>})
"_id": 1,
"date": ISODate("2019-05-14T09:38:51.686Z")
}
```
```
我们使用 `month()``date` 字段进行投影,获取对应的月份:
......@@ -8069,7 +8072,7 @@ let res = await db
month: $.month('$date')
})
.end()
```
```
输出如下:
......@@ -8084,17 +8087,17 @@ let res = await db
聚合操作符。返回日期字段对应的秒数,是一个介于 0 到 59 之间的整数,在特殊情况下(闰秒)可能等于 60。
##### API 说明
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.second(<日期字段>)
db.command.aggregate.second({date:<日期字段>,timezone:<时区>})
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.second(<日期字段>)
db.command.aggregate.second({date:<日期字段>,timezone:<时区>})
```
##### 示例代码
假设集合 `dates` 有以下文档:
```js
......@@ -8102,7 +8105,7 @@ db.command.aggregate.second({date:<日期字段>,timezone:<时区>})
"_id": 1,
"date": ISODate("2019-05-14T09:38:51.686Z")
}
```
```
我们使用 `second()``date` 字段进行投影,获取对应的秒数:
......@@ -8116,7 +8119,7 @@ let res = await db
second: $.second('$date')
})
.end()
```
```
输出如下:
......@@ -8131,19 +8134,19 @@ let res = await db
聚合操作符。返回日期字段对应的周数(一年中的第几周),是一个介于 0 到 53 之间的整数。
##### API 说明
每周以周日为开头,**每年的第一个周日**即为 `week 1` 的开始,这天之前是 `week 0`
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.week(<日期字段>)
db.command.aggregate.week({date:<日期字段>,timezone:<时区>})
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.week(<日期字段>)
db.command.aggregate.week({date:<日期字段>,timezone:<时区>})
```
##### 示例代码
假设集合 `dates` 有以下文档:
```js
......@@ -8151,7 +8154,7 @@ db.command.aggregate.week({date:<日期字段>,timezone:<时区>})
"_id": 1,
"date": ISODate("2019-05-14T09:38:51.686Z")
}
```
```
我们使用 `week()``date` 字段进行投影,获取对应的周数(一年中的第几周):
......@@ -8165,7 +8168,7 @@ let res = await db
week: $.week('$date')
})
.end()
```
```
输出如下:
......@@ -8180,27 +8183,27 @@ let res = await db
聚合操作符。返回日期字段对应的年份。
##### API 说明
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.year(<日期字段>)
db.command.aggregate.year({date:<日期字段>,timezone:<时区>})
该接口有以下两种用法,语法如下:
```js
db.command.aggregate.year(<日期字段>)
db.command.aggregate.year({date:<日期字段>,timezone:<时区>})
```
##### 示例代码
假设集合 `dates` 有以下文档:
假设集合 `dates` 有以下文档:
```js
{
"_id": 1,
"date": ISODate("2019-05-14T09:38:51.686Z")
}
```
```
我们使用 `year()``date` 字段进行投影,获取对应的年份:
我们使用 `year()``date` 字段进行投影,获取对应的年份:
```js
const $ = db.command.aggregate
......@@ -8212,7 +8215,7 @@ let res = await db
year: $.year('$date')
})
.end()
```
```
输出如下:
......@@ -8399,7 +8402,7 @@ let res = await db.collection('sales').aggregate()
聚合操作符。输入一个数组,或者数组字段的表达式。如果数组中所有元素均为真值,那么返回 `true`,否则返回 `false`。空数组永远返回 `true`
##### API 说明
语法如下:
```js
......@@ -8407,7 +8410,7 @@ allElementsTrue([<expression>])
```
##### 示例代码
假设集合 `test` 有如下记录:
```js
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册