Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小浣熊撸代码
uni-app
提交
de5164cc
U
uni-app
项目概览
小浣熊撸代码
/
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,发现更多精彩内容 >>
未验证
提交
de5164cc
编写于
1月 13, 2021
作者:
W
wanganxp
提交者:
GitHub
1月 13, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update cf-database.md
上级
56984f5c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
107 addition
and
103 deletion
+107
-103
docs/uniCloud/cf-database.md
docs/uniCloud/cf-database.md
+107
-103
未找到文件。
docs/uniCloud/cf-database.md
浏览文件 @
de5164cc
...
...
@@ -222,8 +222,12 @@ let res = await collection.doc('doc-id').set({
支持
`where()`
、
`limit()`
、
`skip()`
、
`orderBy()`
、
`get()`
、
`field()`
、
`count()`
等操作。
只有当调用
`get()`
时才会真正发送查询请求。
limit不设置的情况下默认返回100条数据;设置limit有最大值,腾讯云限制为最大1000条,阿里云限制为最大500条。
limit,即返回记录的最大数量,默认值为100,也就是不设置limit的情况下默认返回100条数据。
设置limit有最大值,腾讯云限制为最大1000条,阿里云限制为最大500条。
如需查询更多数据,需要分页多次查询。
**get响应参数**
...
...
@@ -270,64 +274,64 @@ db.collection('user').where({
name
:
new
RegExp
(
'
^ABC
'
)
})
```
**按照数组内的值查询**
mongoDB内按照数组内的值查询可以使用多种写法,以下面的数据为例
```
js
{
arr
:[{
name
:
'
item-1
'
,
},{
name
:
'
item-2
'
,
}]
}
{
arr
:[{
name
:
'
item-3
'
,
},{
name
:
'
item-4
'
,
}]
}
```
如果想查询arr内第一个元素的name为item-1的记录可以使用如下写法
```
js
const
res
=
await
db
.
collection
(
'
test
'
).
where
({
'
arr.0.name
'
:
'
item-1
'
})
res
=
{
data
:[{
arr
:[{
name
:
'
item-1
'
,
},{
name
:
'
item-2
'
,
}]
}]
}
```
如果想查询arr内某个元素的name为item-1的记录(可以是数组内的任意一条name为item-1)可以使用如下写法
```
js
const
res
=
await
db
.
collection
(
'
test
'
).
where
({
'
arr.name
'
:
'
item-1
'
})
res
=
{
data
:[{
arr
:[{
name
:
'
item-1
'
,
},{
name
:
'
item-2
'
,
}]
}]
}
```
**按照数组内的值查询**
mongoDB内按照数组内的值查询可以使用多种写法,以下面的数据为例
```
js
{
arr
:[{
name
:
'
item-1
'
,
},{
name
:
'
item-2
'
,
}]
}
{
arr
:[{
name
:
'
item-3
'
,
},{
name
:
'
item-4
'
,
}]
}
```
如果想查询arr内第一个元素的name为item-1的记录可以使用如下写法
```
js
const
res
=
await
db
.
collection
(
'
test
'
).
where
({
'
arr.0.name
'
:
'
item-1
'
})
res
=
{
data
:[{
arr
:[{
name
:
'
item-1
'
,
},{
name
:
'
item-2
'
,
}]
}]
}
```
如果想查询arr内某个元素的name为item-1的记录(可以是数组内的任意一条name为item-1)可以使用如下写法
```
js
const
res
=
await
db
.
collection
(
'
test
'
).
where
({
'
arr.name
'
:
'
item-1
'
})
res
=
{
data
:[{
arr
:[{
name
:
'
item-1
'
,
},{
name
:
'
item-2
'
,
}]
}]
}
```
### 获取查询数量
...
...
@@ -411,10 +415,10 @@ collection.orderBy(field, orderType)
```
js
let
res
=
await
collection
.
orderBy
(
"
name
"
,
"
asc
"
).
get
()
```
**注意**
-
排序字段存在多个重复的值时排序后的分页结果,可能会出现某条记录在上一页出现又在下一页出现的情况。这时候可以通过指定额外的排序条件比如
`.orderBy("name", "asc").orderBy("_id", "asc")`
来规避这种情况。
**注意**
-
排序字段存在多个重复的值时排序后的分页结果,可能会出现某条记录在上一页出现又在下一页出现的情况。这时候可以通过指定额外的排序条件比如
`.orderBy("name", "asc").orderBy("_id", "asc")`
来规避这种情况。
### 指定返回字段
...
...
@@ -1665,16 +1669,16 @@ db.runTransaction(callback: function, times: number)
**限制**
事务操作时为保障效率和并发性,只允许进行单记录操作,不允许进行批量操作,但可以在一个事务进行多次数据库操作。
-
对于修改和删除仅支持使用doc方法,不支持使用where方法。
-
新增时使用add方法一次只可以新增单条,不可新增多条,即不支持在add方法内传入数组
事务操作时为保障效率和并发性,只允许进行单记录操作,不允许进行批量操作,但可以在一个事务进行多次数据库操作。
-
对于修改和删除仅支持使用doc方法,不支持使用where方法。
-
新增时使用add方法一次只可以新增单条,不可新增多条,即不支持在add方法内传入数组
-
腾讯云没有限制where的使用,但是使用where修改或删除多条会导致无法回滚
**注意事项**
-
开发者提供的事务执行函数正常返回时,uniCloud 会自动提交(
`commit`
)事务,请勿在事务执行函数内调用
`transaction.commit`
方法,该方法仅在通过
`db.startTransaction`
进行事务操作时使用
-
请注意transaction.doc().get()返回的data不是数组形式
-
请注意transaction.doc().get()返回的data不是数组形式
**示例代码**
...
...
@@ -1685,9 +1689,9 @@ const db = uniCloud.database()
const
dbCmd
=
db
.
command
exports
.
main
=
async
(
event
)
=>
{
try
{
const
result
=
await
db
.
runTransaction
(
async
transaction
=>
{
const
aaaRes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
aaa
'
).
get
()
const
bbbRes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
bbb
'
).
get
()
const
result
=
await
db
.
runTransaction
(
async
transaction
=>
{
const
aaaRes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
aaa
'
).
get
()
const
bbbRes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
bbb
'
).
get
()
if
(
aaaRes
.
data
&&
bbbRes
.
data
)
{
try
{
const
updateAAARes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
aaa
'
).
update
({
...
...
@@ -1697,9 +1701,9 @@ exports.main = async (event) => {
const
updateBBBRes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
bbb
'
).
update
({
amount
:
dbCmd
.
inc
(
10
)
})
const
aaaEndRes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
aaa
'
).
get
()
if
(
aaaEndRes
.
data
.
amount
<
0
)
{
// 请注意transaction.doc().get()返回的data不是数组形式
transaction
.
rollback
(
-
100
)
const
aaaEndRes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
aaa
'
).
get
()
if
(
aaaEndRes
.
data
.
amount
<
0
)
{
// 请注意transaction.doc().get()返回的data不是数组形式
transaction
.
rollback
(
-
100
)
}
// 会作为 runTransaction resolve 的结果返回
return
{
...
...
@@ -1708,9 +1712,9 @@ exports.main = async (event) => {
}
catch
(
e
)
{
// 会作为 runTransaction reject 的结果出去
await
transaction
.
rollback
(
-
100
)
}
}
else
{
await
transaction
.
rollback
(
-
100
)
}
}
else
{
await
transaction
.
rollback
(
-
100
)
}
})
...
...
@@ -1746,15 +1750,15 @@ db.startTransaction()
**限制**
事务操作时为保障效率和并发性,只允许进行单记录操作,不允许进行批量操作,但可以在一个事务进行多次数据库操作。
-
对于修改和删除仅支持使用doc方法,不支持使用where方法。
-
新增时使用add方法一次只可以新增单条,不可新增多条,即不支持在add方法内传入数组
事务操作时为保障效率和并发性,只允许进行单记录操作,不允许进行批量操作,但可以在一个事务进行多次数据库操作。
-
对于修改和删除仅支持使用doc方法,不支持使用where方法。
-
新增时使用add方法一次只可以新增单条,不可新增多条,即不支持在add方法内传入数组
-
腾讯云没有限制where的使用,但是使用where修改或删除多条会导致无法回滚
**注意**
-
请注意transaction.doc().get()返回的data不是数组形式
**注意**
-
请注意transaction.doc().get()返回的data不是数组形式
**示例代码**
...
...
@@ -1778,16 +1782,16 @@ exports.main = async (event) => {
const
updateBBBRes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
bbb
'
).
update
({
amount
:
dbCmd
.
inc
(
10
)
})
const
aaaEndRes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
aaa
'
).
get
()
if
(
aaaEndRes
.
data
.
amount
<
0
)
{
// 请注意transaction.doc().get()返回的data不是数组形式
})
const
aaaEndRes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
aaa
'
).
get
()
if
(
aaaEndRes
.
data
.
amount
<
0
)
{
// 请注意transaction.doc().get()返回的data不是数组形式
transaction
.
rollback
(
-
100
)
return
{
success
:
false
,
error
:
`rollback`
,
rollbackCode
:
-
100
,
}
}
}
else
{
await
transaction
.
commit
()
console
.
log
(
`transaction succeeded`
)
...
...
@@ -1795,7 +1799,7 @@ exports.main = async (event) => {
return
{
success
:
true
,
aaaAccount
:
aaaRes
.
data
.
amount
-
10
,
}
}
}
}
else
{
...
...
@@ -7206,17 +7210,17 @@ let res = await db.collection('items').aggregate()
```
### 日期操作符
**注意**
-
以下日期操作符中
`timezone`
均支持以下几种形式
```
js
timezone
:
"
Asia/Shanghai
"
// Asia/Shanghai时区
timezone
:
"
+08
"
// utc+8时区
timezone
:
"
+08:30
"
// 时区偏移8小时30分
timezone
:
"
+0830
"
// 时区偏移8小时30分,同上
```
**注意**
-
以下日期操作符中
`timezone`
均支持以下几种形式
```
js
timezone
:
"
Asia/Shanghai
"
// Asia/Shanghai时区
timezone
:
"
+08
"
// utc+8时区
timezone
:
"
+08:30
"
// 时区偏移8小时30分
timezone
:
"
+0830
"
// 时区偏移8小时30分,同上
```
#### dateFromParts
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录