小程序
小游戏
企业微信
微信支付
扫描小程序码分享
在使用云函数操作数据库的时候,我发现很多的操作数据库语句都可以用js来实现,
比如.addFields({title: ...}) 可以写成查到数据之后给对象点一个title
再比如一些算数操作符$.add $.divide 等 也可以用js 的 + - * / 来代替实现,
那么请问在用数据库操作语句和js语法都能实现的时候,该怎么选择呢?为什么?
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
{ _id: 'xxxxx', a:5, b:5 } { _id: 'zzzss', a:1, b:5 } { _id: 'zxxss', a:5, b:0 } .... // 查询 a+b的 值 大于 5 的记录 // 下面这样写'$a'+'$b' 或者是 a+b 都不对呀 db.collection('xxx').aggregate() .addFields({ c: '$a'+'$b' // 或者是 a+b }).match({ c: $.gt(5) }) // $.add(['$a', '$b']) 才正确 db.collection('xxx').aggregate() .addFields({ c: $.add(['$a', '$b']) }).match({ c: $.gt(5) }).end() 所以你知道改怎么选择了吧
若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
//但是我可以在云函数里直接用for循环来实现啊...
let info = await db.collection('xxx').get()
let data = []
for (let i = 0; i < info.length; i++) {
let sum = info[i].a + info[i].b
if (sum > 5) {
data.push(info[i])
}
//这才是我纠结的地方。。怎么选
{ _id: 'xxxxx', a:5, b:5 }
var a1 = 5, b1 = 3
db.collection('xxx').aggregate()
.addFields({
c: $.add(['$a', '$b']), // c = 字段a的值 + 字段b的值
d: $.add([a1, b1]) , // d = 变量a1的值 + 变量b1的值,在这里可以用$.add, 因为它是在查询中的赋值
}).end()
// 而一般的js,不能用$.add([a1, b1])
e = a1 + b1 => //结果e=8
f = $.add([a1, b1]) // 结果 f 是一个对象,型如:{operator: "add", operands: Array(1), fieldName: Symbol(UNSET_FIELD_NAME), _internalType: Symbol(AGGREGATE_COMMAND)}, 就不是想要8
明...白...?
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
{ _id: 'xxxxx', a:5, b:5 } { _id: 'zzzss', a:1, b:5 } { _id: 'zxxss', a:5, b:0 } .... // 查询 a+b的 值 大于 5 的记录 // 下面这样写'$a'+'$b' 或者是 a+b 都不对呀 db.collection('xxx').aggregate() .addFields({ c: '$a'+'$b' // 或者是 a+b }).match({ c: $.gt(5) }) // $.add(['$a', '$b']) 才正确 db.collection('xxx').aggregate() .addFields({ c: $.add(['$a', '$b']) }).match({ c: $.gt(5) }).end() 所以你知道改怎么选择了吧
若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人
//但是我可以在云函数里直接用for循环来实现啊...
let info = await db.collection('xxx').get()
let data = []
for (let i = 0; i < info.length; i++) {
let sum = info[i].a + info[i].b
if (sum > 5) {
data.push(info[i])
}
}
//这才是我纠结的地方。。怎么选
{ _id: 'xxxxx', a:5, b:5 }
var a1 = 5, b1 = 3
db.collection('xxx').aggregate()
.addFields({
c: $.add(['$a', '$b']), // c = 字段a的值 + 字段b的值
d: $.add([a1, b1]) , // d = 变量a1的值 + 变量b1的值,在这里可以用$.add, 因为它是在查询中的赋值
}).end()
// 而一般的js,不能用$.add([a1, b1])
e = a1 + b1 => //结果e=8
f = $.add([a1, b1]) // 结果 f 是一个对象,型如:{operator: "add", operands: Array(1), fieldName: Symbol(UNSET_FIELD_NAME), _internalType: Symbol(AGGREGATE_COMMAND)}, 就不是想要8
明...白...?