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" } // 将排序后的子文档重新组合成数组
    }
  }
])
文档格式如下:
{
  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" } // 对指定字段进行求和
    }
  }
])
↶ 返回首页 ↶