mongodb 里文档格式如下:
{
id: '',
activities: [
{id: '' },
],
}
想要给 activities 数组中每一项都加一个字段 sort 字段,值都是 1,怎么实现?
db.collection.updateMany(
{}, // 空查询条件表示更新所有文档
{
$set: {
"activities.$[].sort": 1 // $[] 表示匹配数组中的所有元素
}
}
)
其中:$[] 是 全选操作符,会选中 activities 数组中的每一项,无需指定具体索引或条件
mongodb 里文档格式如下:
{
id: '',
activities: [
{ id: '', sort: 1 },
],
}
查询数据时想要 activities 数组根据 sort 字段升序排序返回结果,怎么操作?
db.collection.aggregate([
{ $unwind: "$activities" }, // 展开 activities 数组
{ $sort: { "activities.sort": 1 } }, // 按 sort 字段升序排序
{
$group: {
_id: "$_id", // 按原文档 _id 分组
user_id: { $first: "$user_id" }, // 保留原字段
activities: { $push: "$activities" } // 将排序后的子文档重新组合成数组
}
}
])
db.collection.aggregate([
{
"$project": {
"date": { "$toDate": "$date" },
}
},
])
文档格式如下:
{
date: '2024-04-01',
amt: 12,
}
$isoWeek 的一周是周一到周日
$week 的一周是周日到周六
db.collection.aggregate([
{
"$match": {
// 根据具体需求设置筛选条件
"date": {
"$gte": new Date("2024-04-01"),
"$lte": new Date("2024-04-30")
},
}
},
{
"$group": { // 按照周进行分组
"_id": { "$isoWeek": "$date" }, // 使用 $isoWeek 操作符按照周分组
"sum": { "$sum": "$amt" } // 对指定字段进行求和
}
}
])
db.getCollection('details').aggregate([
{
"$project": {
date: 1,
week: { $isoWeek: { "$toDate": "$date" } },
}
},
])
↶ 返回首页 ↶