中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

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

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

成都創新互聯是專業的甘井子網站建設公司,甘井子接單;提供網站制作、做網站,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行甘井子網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!

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就非常合適了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創新互聯。

網頁標題:mongodb如何對文檔內數組進行過濾的方法步驟
文章網址:http://m.2m8n56k.cn/article10/gsejgo.html

成都網站建設公司_創新互聯,為您提供網站策劃營銷型網站建設網站改版網站建設Google移動網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站優化排名
主站蜘蛛池模板: 在线观看自拍视频 | 亚洲国产激情一区二区三区 | 欧美毛片日韩一级在线 | 日韩一区二区三区四区 | 精品色视频| 在线毛片一区二区不卡视频 | 国产成年人在线观看 | 欧美一区二区三区精品影视 | 嫩草影院在线观看网站成人 | 欧美片欧美日韩国产综合片 | 深夜国产成人福利在线观看女同 | 久久91这里精品国产2020 | www成人| 三级黄色高清视频 | 免费小视频在线观看 | 成人免费在线网站 | 国产首页精品 | 国产午夜精品理论片 | 九九99久久| 一区高清| 欧美一级专区免费大片野外交 | 国产亚洲精品久久久久91网站 | 亚洲天堂免费在线视频 | 国产免费一级视频 | 国产精品女在线观看 | 国产精品情侣久久婷婷文字 | 日本爽快片100色毛片 | 一级国产交换配乱淫 | 亚洲精品在线播放视频 | 国产三级在线免费 | 91精品一区二区三区在线观看 | 草草影院欧美三级日本 | 欧美一级毛片怡红院 | 久久免费国产精品一区二区 | 国产成人精品微拍视频 | 作爱在线观看 | 国产毛片一区 | 亚洲欧美日本综合一区二区三区 | 美女被男人桶到嗷嗷叫爽网站 | 1717she国产精品免费视频 | 成人精品免费视频 |