成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

mongodb如何對文檔內(nèi)數(shù)組進(jìn)行過濾

Tony_Zby / 2914人閱讀

摘要:北京深圳方法二使用過濾符合條件的根文檔結(jié)果集,然后使用返回對應(yīng)字段的同時(shí),在數(shù)組中使用進(jìn)行內(nèi)部過濾,返回最終結(jié)果集北京深圳相對于分組聚合返回結(jié)果集的方式,在當(dāng)前查詢要求下顯得更加優(yōu)雅一些,也比較直接。

mongodb文檔內(nèi)包含數(shù)組,需要將數(shù)組中符合條件的數(shù)據(jù)過濾出來并返回結(jié)果集,可以用兩種方式來查詢groupfilter。
數(shù)據(jù)源:
{
    "_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數(shù)組中只包含is_query等于1的結(jié)果集(0的不包含)。


查詢語句:
方法一:使用$unwindaddrs數(shù)組打散,獲取結(jié)果集后用$match篩選符合條件的數(shù)據(jù),最后使用$group進(jìn)行聚合獲取最終結(jié)果集。
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過濾符合條件的根文檔結(jié)果集,然后使用$project返回對應(yīng)字段的同時(shí),在addrs數(shù)組中使用$filter進(jìn)行內(nèi)部過濾,返回最終結(jié)果集
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分組聚合返回結(jié)果集的方式,在當(dāng)前查詢要求下$filter顯得更加優(yōu)雅一些,也比較直接。當(dāng)然如果包含統(tǒng)計(jì)操作,比如要求返回is_query等于1的數(shù)量,這時(shí)候$group就非常合適了。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/19381.html

相關(guān)文章

  • MongoDB指南---8、特定類型的查詢

    摘要:但有時(shí)我們希望返回與查詢條件相匹配的任意一個(gè)數(shù)組元素。首先,可以使用要求同時(shí)使用查詢條件中的兩個(gè)語句與一個(gè)數(shù)組元素進(jìn)行比較。 上一篇文章:MongoDB指南---7、find簡介與查詢條件下一篇文章:MongoDB指南---9、游標(biāo)與數(shù)據(jù)庫命令 如第2章所述,MongoDB的文檔可以使用多種類型的數(shù)據(jù)。其中有一些在查詢時(shí)會(huì)有特別的表現(xiàn)。 4.3.1 null null類型的行為有點(diǎn)奇...

    娣辯孩 評論0 收藏0
  • MongoDB指南---8、特定類型的查詢

    摘要:但有時(shí)我們希望返回與查詢條件相匹配的任意一個(gè)數(shù)組元素。首先,可以使用要求同時(shí)使用查詢條件中的兩個(gè)語句與一個(gè)數(shù)組元素進(jìn)行比較。 上一篇文章:MongoDB指南---7、find簡介與查詢條件下一篇文章:MongoDB指南---9、游標(biāo)與數(shù)據(jù)庫命令 如第2章所述,MongoDB的文檔可以使用多種類型的數(shù)據(jù)。其中有一些在查詢時(shí)會(huì)有特別的表現(xiàn)。 4.3.1 null null類型的行為有點(diǎn)奇...

    baiy 評論0 收藏0
  • MongoDB指南---15、特殊的索引和集合:地理空間索引、使用GridFS存儲(chǔ)文件

    摘要:下面列出了使用作為文件存儲(chǔ)的理由。如果已經(jīng)在使用,那么可以使用來代替獨(dú)立的文件存儲(chǔ)工具。在中,文件存儲(chǔ)的集中度會(huì)比較高,因?yàn)槭且詾閱挝粊矸峙鋽?shù)據(jù)文件的。揭開的面紗是一種輕量級的文件存儲(chǔ)規(guī)范,用于存儲(chǔ)中的普通文檔。 上一篇文章:MongoDB指南---14、特殊的索引和集合:固定集合、TTL索引、全文本索引下一篇文章:MongoDB指南---16、聚合 地理空間索引 MongoDB支持...

    mtunique 評論0 收藏0
  • MongoDB指南---15、特殊的索引和集合:地理空間索引、使用GridFS存儲(chǔ)文件

    摘要:下面列出了使用作為文件存儲(chǔ)的理由。如果已經(jīng)在使用,那么可以使用來代替獨(dú)立的文件存儲(chǔ)工具。在中,文件存儲(chǔ)的集中度會(huì)比較高,因?yàn)槭且詾閱挝粊矸峙鋽?shù)據(jù)文件的。揭開的面紗是一種輕量級的文件存儲(chǔ)規(guī)范,用于存儲(chǔ)中的普通文檔。 上一篇文章:MongoDB指南---14、特殊的索引和集合:固定集合、TTL索引、全文本索引下一篇文章:MongoDB指南---16、聚合 地理空間索引 MongoDB支持...

    2i18ns 評論0 收藏0
  • MongoDB指南---17、MapReduce

    摘要:操作花費(fèi)的時(shí)間,單位是毫秒。處理完成后,會(huì)自動(dòng)將臨時(shí)集合的名字更改為你指定的集合名,這個(gè)重命名的過程是原子性的。作用域在這些函數(shù)內(nèi)部是不變的。上一篇文章指南聚合下一篇文章指南聚合命令 上一篇文章:MongoDB指南---16、聚合下一篇文章:MongoDB指南---18、聚合命令 MapReduce是聚合工具中的明星,它非常強(qiáng)大、非常靈活。有些問題過于復(fù)雜,無法使用聚合框架的查詢語言...

    jonh_felix 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<