Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
genary
uni-app
提交
f949f6cf
U
uni-app
项目概览
genary
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f949f6cf
编写于
1月 20, 2021
作者:
雪洛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: uniCloud database
上级
1d3bd001
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
166 addition
and
155 deletion
+166
-155
docs/uniCloud/cf-database.md
docs/uniCloud/cf-database.md
+166
-155
未找到文件。
docs/uniCloud/cf-database.md
浏览文件 @
f949f6cf
...
...
@@ -98,25 +98,21 @@ const collection = db.collection('user');
### 时间 Date
**使用阿里云时请存储日期字符串或者时间戳,比如`new Date().toISOString()`。数据库存储Date类型数据仅腾讯云支持**
Date 类型用于表示时间,精确到毫秒,可以用 JavaScript 内置 Date 对象创建。需要特别注意的是,用此方法创建的时间是客户端时间,不是服务端时间。如果需要使用服务端时间,应该用 API 中提供的 serverDate 对象来创建一个服务端当前时间的标记,当使用了 serverDate 对象的请求抵达服务端处理时,该字段会被转换成服务端当前的时间,更棒的是,我们在构造 serverDate 对象时还可通过传入一个有 offset 字段的对象来标记一个与当前服务端时间偏移 offset 毫秒的时间,这样我们就可以达到比如如下效果:指定一个字段为服务端时间往后一个小时。
<!-- 我们推荐无论是腾讯云还是阿里云都以时间戳的方式存储时间字段 -->
Date 类型用于表示时间,精确到毫秒,可以用 JavaScript 内置 Date 对象创建。需要特别注意的是,用此方法创建的时间是客户端时间,不是服务端时间。如果需要使用服务端时间,应该用 API 中提供的 serverDate 对象来创建一个服务端当前时间的标记,当使用了 serverDate 对象的请求抵达服务端处理时,该字段会被转换成服务端当前的时间,更棒的是,我们在构造 serverDate 对象时还可通过传入一个有 offset 字段的对象来标记一个与当前服务端时间偏移 offset 毫秒的时间,这样我们就可以达到比如如下效果:指定一个字段为服务端时间往后一个小时。
<!-- 那么当我们需要使用客户端时间时,存放 Date 对象和存放毫秒数是否是一样的效果呢?不是的,我们的数据库有针对日期类型的优化,建议大家使用时都用 Date 或 serverDate 构造时间对象。 -->
```
js
//服务端当前时间
new
db
.
serverDate
()
```
```
js
// 服务端当前时间
new
db
.
serverDate
()
// 在云函数内使用new Date()和new db.serverDate()效果一样
```
```
js
//服务端当前时间加1S
new
db
.
serverDate
({
```
js
//服务端当前时间加1S
new
db
.
serverDate
({
offset
:
1000
})
```
})
// 在云函数内使用new Date(1000)和上面的用法效果一样
```
如果需要对日期进行比较操作,可以使用聚合操作符将日期进行转化,比如以下示例查询所有time字段在
`2020-02-02`
以后的记录
...
...
@@ -7391,10 +7387,6 @@ db.command.aggregate.dateFromParts({
})
```
**说明**
-
`timezone`
字段请参考
[
Olson Timezone Identifier
](
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
)
,形式类似:
`Asia/Shanghai`
##### 示例代码
```
js
...
...
@@ -7624,11 +7616,14 @@ let res = await db
##### API 说明
语法如下:
该接口有以下两种用法,语法如下:
```
js
db
.
command
.
aggregate
.
dayOfMonth
(
<
日期字段
>
)
db
.
command
.
aggregate
.
dayOfMonth
({
date
:
<
日期字段
>
,
timezone
:
<
时区
>
})
```
##### 示例代码
...
...
@@ -7670,13 +7665,15 @@ let res = await db
##### API 说明
*注意:周日是每周的第 1 天*
*
语法如下:
**注意:周日是每周的第 1 天**
该接口有以下两种用法,语法如下:
```
js
db
.
command
.
aggregate
.
dayOfWeek
(
<
日期字段
>
)
db
.
command
.
aggregate
.
dayOfWeek
({
date
:
<
日期字段
>
,
timezone
:
<
时区
>
})
```
##### 示例代码
...
...
@@ -7718,11 +7715,13 @@ let res = await db
##### API 说明
语法如下:
该接口有以下两种用法,语法如下:
```
js
db
.
command
.
aggregate
.
dayOfYear
(
<
日期字段
>
)
db
.
command
.
aggregate
.
dayOfYear
({
date
:
<
日期字段
>
,
timezone
:
<
时区
>
})
```
##### 示例代码
...
...
@@ -7764,11 +7763,13 @@ let res = await db
##### API 说明
语法如下:
该接口有以下两种用法,语法如下:
```
js
db
.
command
.
aggregate
.
hour
(
<
日期字段
>
)
db
.
command
.
aggregate
.
hour
({
date
:
<
日期字段
>
,
timezone
:
<
时区
>
})
```
##### 示例代码
...
...
@@ -7808,18 +7809,19 @@ let res = await db
聚合操作符。返回日期字段对应的 ISO 8601 标准的天数(一周中的第几天),是一个介于 1(周一)到 7(周日)之间的整数。
##### API 说明
语法如下:
该接口有以下两种用法,语法如下:
```
js
db
.
command
.
aggregate
.
month
(
<
日期字段
>
)
db
.
command
.
aggregate
.
isoDayOfWeek
(
<
日期字段
>
)
db
.
command
.
aggregate
.
isoDayOfWeek
({
date
:
<
日期字段
>
,
timezone
:
<
时区
>
})
```
##### 示例代码
假设集合
`dates`
有以下文档:
假设集合
`dates`
有以下文档:
```
js
{
...
...
@@ -7827,7 +7829,7 @@ db.command.aggregate.month(<日期字段>)
"
date
"
:
ISODate
(
"
2019-05-14T09:38:51.686Z
"
)
}
```
我们使用
`
month
()`
对
`date`
字段进行投影,获取对应的 ISO 8601 标准的天数(一周中的第几天):
我们使用
`
isoDayOfWeek
()`
对
`date`
字段进行投影,获取对应的 ISO 8601 标准的天数(一周中的第几天):
```
js
...
...
@@ -7841,8 +7843,8 @@ let res = await db
})
.
end
()
```
输出如下:
输出如下:
```
js
{
...
...
@@ -7856,20 +7858,22 @@ let res = await db
##### API 说明
根据 ISO 8601 标准,周一到周日视为一周,本年度第一个周四所在的那周,视为本年度的第 1 周。
例如:2016 年 1 月 7 日是那年的第一个周四,那么 2016.01.04(周一)到 2016.01.10(周日) 即为第 1 周。同理,2016 年 1 月 1 日的周数为 53
。
根据 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
:
<
时区
>
})
```
##### 示例代码
假设集合
`dates`
有以下文档:
假设集合
`dates`
有以下文档:
```
js
{
...
...
@@ -7877,6 +7881,7 @@ db.command.aggregate.isoWeek(<日期字段>)
"
date
"
:
ISODate
(
"
2019-05-14T09:38:51.686Z
"
)
}
```
我们使用
`isoWeek()`
对
`date`
字段进行投影,获取对应的 ISO 8601 标准的周数(一年中的第几周):
...
...
@@ -7891,8 +7896,8 @@ let res = await db
})
.
end
()
```
输出如下:
输出如下:
```
js
{
...
...
@@ -7904,20 +7909,21 @@ let res = await db
聚合操作符。返回日期字段对应的 ISO 8601 标准的天数(一年中的第几天)。
##### API 说明
此处的“年”以第一周的周一为开始,以最后一周的周日为结束。
语法如下:
此处的“年”以第一周的周一为开始,以最后一周的周日为结束。
该接口有以下两种用法,语法如下:
```
js
db
.
command
.
aggregate
.
isoWeekYear
(
<
日期字段
>
)
db
.
command
.
aggregate
.
isoWeekYear
({
date
:
<
日期字段
>
,
timezone
:
<
时区
>
})
```
##### 示例代码
假设集合
`dates`
有以下文档:
假设集合
`dates`
有以下文档:
```
js
{
...
...
@@ -7925,8 +7931,8 @@ db.command.aggregate.isoWeekYear(<日期字段>)
"
date
"
:
ISODate
(
"
2019-05-14T09:38:51.686Z
"
)
}
```
我们使用
`isoWeekYear()`
对
`date`
字段进行投影,获取对应的 ISO 8601 标准的天数(一年中的第几天):
我们使用
`isoWeekYear()`
对
`date`
字段进行投影,获取对应的 ISO 8601 标准的天数(一年中的第几天):
```
js
const
$
=
db
.
command
.
aggregate
...
...
@@ -7939,8 +7945,8 @@ let res = await db
})
.
end
()
```
输出如下:
输出如下:
```
js
{
...
...
@@ -7952,18 +7958,19 @@ let res = await db
聚合操作符。返回日期字段对应的毫秒数,是一个介于 0 到 999 之间的整数。
##### API 说明
语法如下:
该接口有以下两种用法,语法如下:
```
js
db
.
command
.
aggregate
.
millisecond
(
<
日期字段
>
)
db
.
command
.
aggregate
.
millisecond
({
date
:
<
日期字段
>
,
timezone
:
<
时区
>
})
```
##### 示例代码
假设集合
`dates`
有以下文档:
假设集合
`dates`
有以下文档:
```
js
{
...
...
@@ -7971,8 +7978,8 @@ db.command.aggregate.millisecond(<日期字段>)
"
date
"
:
ISODate
(
"
2019-05-14T09:38:51.686Z
"
)
}
```
我们使用
`millisecond()`
对
`date`
字段进行投影,获取对应的毫秒数:
我们使用
`millisecond()`
对
`date`
字段进行投影,获取对应的毫秒数:
```
js
const
$
=
db
.
command
.
aggregate
...
...
@@ -7985,8 +7992,8 @@ let res = await db
})
.
end
()
```
输出如下:
输出如下:
```
js
{
...
...
@@ -7998,18 +8005,19 @@ let res = await db
聚合操作符。返回日期字段对应的分钟数,是一个介于 0 到 59 之间的整数。
##### API 说明
语法如下:
该接口有以下两种用法,语法如下:
```
js
db
.
command
.
aggregate
.
minute
(
<
日期字段
>
)
db
.
command
.
aggregate
.
minute
({
date
:
<
日期字段
>
,
timezone
:
<
时区
>
})
```
##### 示例代码
假设集合
`dates`
有以下文档:
假设集合
`dates`
有以下文档:
```
js
{
...
...
@@ -8017,8 +8025,8 @@ db.command.aggregate.minute(<日期字段>)
"
date
"
:
ISODate
(
"
2019-05-14T09:38:51.686Z
"
)
}
```
我们使用
`minute()`
对
`date`
字段进行投影,获取对应的分钟数:
我们使用
`minute()`
对
`date`
字段进行投影,获取对应的分钟数:
```
js
const
$
=
db
.
command
.
aggregate
...
...
@@ -8031,8 +8039,8 @@ let res = await db
})
.
end
()
```
输出如下:
输出如下:
```
js
{
...
...
@@ -8044,13 +8052,14 @@ let res = await db
聚合操作符。返回日期字段对应的月份,是一个介于 1 到 12 之间的整数。
##### API 说明
语法如下:
该接口有以下两种用法,语法如下:
```
js
db
.
command
.
aggregate
.
month
(
<
日期字段
>
)
db
.
command
.
aggregate
.
month
({
date
:
<
日期字段
>
,
timezone
:
<
时区
>
})
```
##### 示例代码
...
...
@@ -8063,8 +8072,8 @@ db.command.aggregate.month(<日期字段>)
"
date
"
:
ISODate
(
"
2019-05-14T09:38:51.686Z
"
)
}
```
我们使用
`month()`
对
`date`
字段进行投影,获取对应的月份:
我们使用
`month()`
对
`date`
字段进行投影,获取对应的月份:
```
js
const
$
=
db
.
command
.
aggregate
...
...
@@ -8077,8 +8086,8 @@ let res = await db
})
.
end
()
```
输出如下:
输出如下:
```
js
{
...
...
@@ -8090,18 +8099,19 @@ let res = await db
聚合操作符。返回日期字段对应的秒数,是一个介于 0 到 59 之间的整数,在特殊情况下(闰秒)可能等于 60。
##### API 说明
语法如下:
该接口有以下两种用法,语法如下:
```
js
db
.
command
.
aggregate
.
second
(
<
日期字段
>
)
db
.
command
.
aggregate
.
second
({
date
:
<
日期字段
>
,
timezone
:
<
时区
>
})
```
##### 示例代码
假设集合
`dates`
有以下文档:
假设集合
`dates`
有以下文档:
```
js
{
...
...
@@ -8109,8 +8119,8 @@ db.command.aggregate.second(<日期字段>)
"
date
"
:
ISODate
(
"
2019-05-14T09:38:51.686Z
"
)
}
```
我们使用
`second()`
对
`date`
字段进行投影,获取对应的秒数:
我们使用
`second()`
对
`date`
字段进行投影,获取对应的秒数:
```
js
const
$
=
db
.
command
.
aggregate
...
...
@@ -8123,8 +8133,8 @@ let res = await db
})
.
end
()
```
输出如下:
输出如下:
```
js
{
...
...
@@ -8136,20 +8146,21 @@ let res = await db
聚合操作符。返回日期字段对应的周数(一年中的第几周),是一个介于 0 到 53 之间的整数。
##### API 说明
每周以周日为开头,
**每年的第一个周日**
即为
`week 1`
的开始,这天之前是
`week 0`
。
语法如下:
每周以周日为开头,
**每年的第一个周日**
即为
`week 1`
的开始,这天之前是
`week 0`
。
该接口有以下两种用法,语法如下:
```
js
db
.
command
.
aggregate
.
week
(
<
日期字段
>
)
db
.
command
.
aggregate
.
week
({
date
:
<
日期字段
>
,
timezone
:
<
时区
>
})
```
##### 示例代码
假设集合
`dates`
有以下文档:
假设集合
`dates`
有以下文档:
```
js
{
...
...
@@ -8157,8 +8168,8 @@ db.command.aggregate.week(<日期字段>)
"
date
"
:
ISODate
(
"
2019-05-14T09:38:51.686Z
"
)
}
```
我们使用
`week()`
对
`date`
字段进行投影,获取对应的周数(一年中的第几周):
我们使用
`week()`
对
`date`
字段进行投影,获取对应的周数(一年中的第几周):
```
js
const
$
=
db
.
command
.
aggregate
...
...
@@ -8171,8 +8182,8 @@ let res = await db
})
.
end
()
```
输出如下:
输出如下:
```
js
{
...
...
@@ -8184,18 +8195,19 @@ let res = await db
聚合操作符。返回日期字段对应的年份。
##### API 说明
语法如下:
该接口有以下两种用法,语法如下:
```
js
db
.
command
.
aggregate
.
year
(
<
日期字段
>
)
db
.
command
.
aggregate
.
year
({
date
:
<
日期字段
>
,
timezone
:
<
时区
>
})
```
##### 示例代码
假设集合
`dates`
有以下文档:
假设集合
`dates`
有以下文档:
```
js
{
...
...
@@ -8203,8 +8215,8 @@ db.command.aggregate.year(<日期字段>)
"
date
"
:
ISODate
(
"
2019-05-14T09:38:51.686Z
"
)
}
```
我们使用
`year()`
对
`date`
字段进行投影,获取对应的年份:
我们使用
`year()`
对
`date`
字段进行投影,获取对应的年份:
```
js
const
$
=
db
.
command
.
aggregate
...
...
@@ -8217,8 +8229,8 @@ let res = await db
})
.
end
()
```
输出如下:
输出如下:
```
js
{
...
...
@@ -8364,7 +8376,7 @@ let res = await db.collection('sales').aggregate()
**一般用法**
假设集合
`test`
存在以下文档:
假设集合
`test`
存在以下文档:
```
js
...
...
@@ -8402,18 +8414,17 @@ let res = await db.collection('sales').aggregate()
聚合操作符。输入一个数组,或者数组字段的表达式。如果数组中所有元素均为真值,那么返回
`true`
,否则返回
`false`
。空数组永远返回
`true`
。
##### API 说明
语法如下:
语法如下:
```
js
allElementsTrue
([
<
expression
>
])
```
##### 示例代码
假设集合
`test`
有如下记录:
假设集合
`test`
有如下记录:
```
js
{
"
_id
"
:
1
,
"
array
"
:
[
true
]
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录