1、聚合操作的group使用非_id字段名报错the field must be an accumulator object,使用_id作为属性名则不会报错。如何输入name不报错?2、使用addFields新增字段时,bill[0].name或bill[0]不会输出,使用bill.name会输出一个数组,如何输出字符串?
数据如下
[
{
"_id": "66536bdf421fe337fac447b7",
"bh": "20245270534510",
"bill": [
{
"_id": "66536bfd421fe337fac447d1",
"bh": "202405270603979",
"createTime": 1716743163995,
"isincome": false,
"name": "八宝粥",
"note": "",
"num": 3,
"status": true,
"time": 1716743161000,
"type": "66536bdf421fe337fac447b7",
"updateTime": 1716743163995
},
{
"_id": "66536c1fedf2361f136c9a92",
"bh": "202405270638453",
"createTime": 1716743198467,
"isincome": false,
"name": "八宝粥",
"note": "",
"num": 4,
"status": true,
"time": 1716656796000,
"type": "66536bdf421fe337fac447b7",
"updateTime": 1716743198467
}
],
"createTime": 1716743134526,
"name": "早餐",
"note": "",
"status": true,
"time": 1716743124000,
"updateTime": 1716743134526
},
{
"_id": "66536be804cae60efec4d00d",
"bh": "20245270543841",
"bill": [
{
"_id": "66536c0fedf2361f136c9a8d",
"bh": "202405270622779",
"createTime": 1716743182794,
"isincome": false,
"name": "大米饭",
"note": "",
"num": 10,
"status": true,
"time": 1716743178000,
"type": "66536be804cae60efec4d00d",
"updateTime": 1716743182794
}
],
"createTime": 1716743143855,
"name": "午餐",
"note": "",
"status": true,
"time": 1716743142000,
"updateTime": 1716743143855
}
]
代码如下
const dbCmd = db.command;
const $ = db.command.aggregate;
db.collection("billType").aggregate().lookup({
from: 'bill',
let: {
billType_id: '$_id'
},
pipeline: $.pipeline()
.match(dbCmd.expr(
$.eq(['$type', '$$billType_id'])
))
.done(),
as: 'bill'
}).group({
name:"$name"
}).end()
1 个回复
DCloud_uniCloud_VK
看下group的文档 https://doc.dcloud.net.cn/uniCloud/cf-database-aggregate.html#aggregate-group
里面有说明哪些参数是必填的,以及正确的用法