91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-08-20 07:24:13 來源:腳本之家 閱讀:421 作者:ZevFang 欄目:MongoDB數據庫

本文介紹了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就非常合適了。

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

杭锦旗| 上高县| 宝鸡市| 象山县| 溆浦县| 安阳县| 铁岭县| 台中县| 湄潭县| 沈阳市| 静宁县| 建始县| 永宁县| 正阳县| 昌平区| 宜州市| 城固县| 东城区| 莱州市| 张家界市| 苗栗市| 阿拉善左旗| 海丰县| 牟定县| 鹿泉市| 军事| 三河市| 通辽市| 辽中县| 宜兰市| 吴旗县| 运城市| 和田县| 卓尼县| 河南省| 四子王旗| 平陆县| 高陵县| 淮阳县| 萝北县| 镇原县|