麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MongoDB > 正文

mongodb如何對文檔內數組進行過濾的方法步驟

2020-03-14 12:49:13
字體:
來源:轉載
供稿:網友

本文介紹了mongodb如何對文檔內數組進行過濾的方法步驟,分享給大家,具體如下:

mongodb,數組,過濾

mongodb文檔內包含數組,需要將數組中符合條件的數據過濾出來并返回結果集,可以用兩種方式來查詢group或filter。
數據源:

{  "_id" : ObjectId("5bbcc0c9a74db9804e78a157"),  "uid" : "1000001",  "name" : "zhangsan",  "addrs" : [     {      "is_query" : "1",      "city" : "北京"    },     {      "is_query" : "0",      "city" : "上海"    },     {      "is_query" : "1",      "city" : "深圳"    }  ]}{  "_id" : ObjectId("5bbcc167a74db9804e78a172"),  "uid" : "1000002",  "name" : "lisi",  "addrs" : [     {      "is_query" : "0",      "city" : "北京"    },     {      "is_query" : "0",      "city" : "上海"    },     {      "is_query" : "1",      "city" : "深圳"    }  ]}

要求查詢指定uid下,addrs數組中只包含is_query等于1的結果集(0的不包含)。

查詢語句:

方法一:使用$unwind將addrs數組打散,獲取結果集后用$match篩選符合條件的數據,最后使用$group進行聚合獲取最終結果集。

db.getCollection('user').aggregate(  [    {        $unwind: "$addrs"     },    {       $match : {        "uid":"1000001",         "addrs.is_query": "1"       }     },    {       $group : {         "_id" : "$uid",         "addrs": { $push: "$addrs" }       }     }   ])

Result:

{  "_id" : "1000001",  "addrs" : [     {      "is_query" : "1",      "city" : "北京"    },     {      "is_query" : "1",      "city" : "深圳"    }  ]}

方法二:使用$match過濾符合條件的根文檔結果集,然后使用$project返回對應字段的同時,在addrs數組中使用$filter進行內部過濾,返回最終結果集

db.getCollection('user').aggregate(  [    {       $match : { "uid": "1000001" }     },    {      $project: {        "uid": 1,        "name": 1,        "addrs": {          $filter: {            input: "$addrs",            as: "item",            cond: { $eq : ["$$item.is_query","1"] }          }        }      }    }  ])

Result:

{  "_id" : ObjectId("5bbcc0c9a74db9804e78a157"),  "uid" : "1000001",  "name" : "zhangsan",  "addrs" : [     {      "is_query" : "1",      "city" : "北京"    },     {      "is_query" : "1",      "city" : "深圳"    }  ]}

相對于$group分組聚合返回結果集的方式,在當前查詢要求下$filter顯得更加優雅一些,也比較直接。當然如果包含統計操作,比如要求返回is_query等于1的數量,這時候$group就非常合適了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到MongoDB頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产成人精品免费视频大全最热 | 久久精品亚洲精品国产欧美kt∨ | 欧美一级二级毛片视频 | hd欧美free性xxxx护土 | 黄色毛片a级 | 国产一级一区二区 | 国产亚洲精品久久久久久网站 | 西川av在线一区二区三区 | 福利免费观看 | 曰批全过程120分钟免费69 | 三级xxxx| 国产精品手机在线亚洲 | 久久中文免费 | 国产男女 爽爽爽爽视频 | 一区二区久久精品66国产精品 | 性爱视频免费 | 黄 色 免费网 站 成 人 | 国产深夜福利视频在线播放 | 日朝毛片 | 二级大黄大片高清在线视频 | 麻豆视频网 | 日韩中文字幕一区二区三区 | 黄色网址在线免费播放 | av影片在线观看 | 一区二区三区欧美精品 | 亚洲成人福利在线观看 | 欧美日韩免费看 | 欧美成人精品欧美一级乱黄 | 国产69精品久久久久9999不卡免费 | 亚洲人成网在线观看 | 欧美成人免费tv在线播放 | 一级黄色免费 | 在线观看免费视频麻豆 | 久久亚洲春色中文字幕久久 | 免费观看视频网站 | www久久艹 | 欧美乱码精品一区 | 国产一区网址 | 亚洲成人中文字幕在线 | 特级毛片a级毛片100免费 | 中日韩乱码一二新区 |