亚洲国产第一_开心网五月色综合亚洲_日本一级特黄特色大片免费观看_久久久久久久久久免观看

Hello! 歡迎來到小浪云!


MongoDB文檔中如何查詢meta字段下子字段timestampOccur符合指定日期范圍的記錄?


avatar
小浪云 2024-11-09 246

MongoDB文檔中如何查詢meta字段下子字段timestampOccur符合指定日期范圍的記錄?

mongodb文檔的復雜查詢:查詢meta字段timestampoccur

問題:

給定一個包含如下結構數據的mongodb文檔:

{   // ... 省略其他字段   "meta": {     "aaa": { // 注意,這里的aaa,每條數據都不一樣,隨機的名稱       "timestampoccur": [         {           "$date": "2023-06-19t10:18:02.000z"  // 這個是 date 類型         }       ]     },     "bbb": {       "timestampoccur": [         {           "$date": "2023-06-19t02:59:05.000z"         }       ]     }   } }
登錄后復制

如何在mongodb中查詢以下內容:

  • 查詢meta字段下各字段的timestampoccur
  • 符合指定日期范圍內的記錄

解答:

以下mongodb聚合管道可滿足您的要求:

db.collection.aggregate([   {     $match: {       "meta.timestampOccur": {         $elemMatch: {           $gte: ISODate("2023-06-18T00:00:00.000Z"),           $lt: ISODate("2023-06-20T00:00:00.000Z")         }       }     }   },   {     $project: {       _id: 1,       campaign: 1,       status: 1,       workflow: 1,       user: 1,       basic: 1,       type: 1,       createdAt: 1,       updatedAt: 1,       tag: 1,       code: 1,       meta: {         $objectToArray: "$meta"       }     }   },   {     $unwind: {       path: "$meta",       includeArrayIndex: "metaIndex"     }   },   {     $match: {       "meta.v.timestampOccur": {         $elemMatch: {           $gte: ISODate("2023-06-18T00:00:00.000Z"),           $lt: ISODate("2023-06-20T00:00:00.000Z")         }       }     }   },   {     $group: {       _id: "$_id",       campaign: { $first: "$campaign" },       status: { $first: "$status" },       workflow: { $first: "$workflow" },       user: { $first: "$user" },       basic: { $first: "$basic" },       type: { $first: "$type" },       createdAt: { $first: "$createdAt" },       updatedAt: { $first: "$updatedAt" },       tag: { $first: "$tag" },       code: { $first: "$code" },       meta: {         $push: {           k: "$meta.k",           v: "$meta.v"         }       }     }   },   {     $project: {       _id: 1,       campaign: 1,       status: 1,       workflow: 1,       user: 1,       basic: 1,       type: 1,       createdAt: 1,       updatedAt: 1,       tag: 1,       code: 1,       meta: {         $arrayToObject: "$meta"       }     }   } ])
登錄后復制

代碼注釋:

  • $match:匹配符合日期范圍的記錄。
  • $project:展開meta對象,方便后續操作。
  • $unwind:將meta對象轉換為數組,方便后續操作。
  • $group:重新構建meta對象
  • $project:將meta對象轉換回原始格式。

相關閱讀