国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Mongodb過濾器filter選擇要返回的數(shù)組子集

這篇具有很好參考價值的文章主要介紹了Mongodb過濾器filter選擇要返回的數(shù)組子集。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Mongodb過濾器

Mongodb使用過濾器 $filter 根據(jù)指定條件選擇要返回的數(shù)組子集。返回僅包含與條件匹配的元素的數(shù)組。返回的元素按原始順序排列。
也就是說,這個是選擇你要的文檔,而不是排除。 如果該數(shù)組沒有符合條件 ,則為 空 []

$filter: 選擇數(shù)組的子集以返回僅包含與過濾條件匹配的元素的數(shù)組。

插入測試數(shù)據(jù)

sit_rs1:PRIMARY> db.user.insertMany([
...  { name: "user1", age: 10, letter: [{"x":"X1", "y":"Y1"}, {"x":"X2", "y":"Y2"}, {"x":"X3", "y":"Y3"}], number: [ { "n1":2, "n2":6 }, { "n1":3, "n2":3 }, { "n1":5, "n2":6 } ] },
...  { name: "user2", age: 20, letter: [{"V":"V1", "y":"Y1"}, {"V":"V2", "y":"Y2"}, {"V":"V3", "y":"Y3"}], number: [ { "n1":1, "n2":3 }, { "n1":4, "n2":5 }, { "n1":7, "n2":6 } ] },
...  { name: "user3", age: 30, letter: [{"V":"V1", "w":"W1"}, {"V":"V2", "w":"W2"}, {"V":"V3", "w":"W3"}], number: [ { "n1":1, "n2":8 }, { "n1":2, "n2":6 }, { "n1":2, "n2":6 } ] },
...  { name: "user4", age: 45, letter: [{"z":"Z1", "w":"W1"}, {"z":"Z2", "w":"W2"}, {"z":"Z3", "w":"W3"}], number: [ { "n1":9, "n2":8 }, { "n1":2, "n2":4 }, { "n1":3, "n2":6 } ] },
...  { name: "user5", age: 55, letter: [{"z":"Z1", "u":"U1"}, {"z":"Z2", "u":"U2"}, {"z":"Z3", "u":"U3"}], number: [ { "n1":7, "n2":8 }, { "n1":8, "n2":4 }, { "n1":4, "n2":6 } ] },
...  { name: "user6", age: 55, letter: [{"t":"T1", "u":"U1"}, {"t":"T2", "u":"U2"}, {"t":"T3", "u":"U3"}], number: [ { "n1":5, "n2":8 }, { "n1":8, "n2":5 }, { "n1":7, "n2":6 } ] },
... ])
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("64b661869be837dc8e997b74"),
                ObjectId("64b661869be837dc8e997b75"),
                ObjectId("64b661869be837dc8e997b76"),
                ObjectId("64b661869be837dc8e997b77"),
                ObjectId("64b661869be837dc8e997b78"),
                ObjectId("64b661869be837dc8e997b79")
        ]
}
sit_rs1:PRIMARY> db.user.find()
{ "_id" : ObjectId("64b661869be837dc8e997b74"), "name" : "user1", "age" : 10, "letter" : [ { "x" : "X1", "y" : "Y1" }, { "x" : "X2", "y" : "Y2" }, { "x" : "X3", "y" : "Y3" } ], "number" : [ { "n1" : 2, "n2" : 6 }, { "n1" : 3, "n2" : 3 }, { "n1" : 5, "n2" : 6 } ] }
{ "_id" : ObjectId("64b661869be837dc8e997b75"), "name" : "user2", "age" : 20, "letter" : [ { "V" : "V1", "y" : "Y1" }, { "V" : "V2", "y" : "Y2" }, { "V" : "V3", "y" : "Y3" } ], "number" : [ { "n1" : 1, "n2" : 3 }, { "n1" : 4, "n2" : 5 }, { "n1" : 7, "n2" : 6 } ] }
{ "_id" : ObjectId("64b661869be837dc8e997b76"), "name" : "user3", "age" : 30, "letter" : [ { "V" : "V1", "w" : "W1" }, { "V" : "V2", "w" : "W2" }, { "V" : "V3", "w" : "W3" } ], "number" : [ { "n1" : 1, "n2" : 8 }, { "n1" : 2, "n2" : 6 }, { "n1" : 2, "n2" : 6 } ] }
{ "_id" : ObjectId("64b661869be837dc8e997b77"), "name" : "user4", "age" : 45, "letter" : [ { "z" : "Z1", "w" : "W1" }, { "z" : "Z2", "w" : "W2" }, { "z" : "Z3", "w" : "W3" } ], "number" : [ { "n1" : 9, "n2" : 8 }, { "n1" : 2, "n2" : 4 }, { "n1" : 3, "n2" : 6 } ] }
{ "_id" : ObjectId("64b661869be837dc8e997b78"), "name" : "user5", "age" : 55, "letter" : [ { "z" : "Z1", "u" : "U1" }, { "z" : "Z2", "u" : "U2" }, { "z" : "Z3", "u" : "U3" } ], "number" : [ { "n1" : 7, "n2" : 8 }, { "n1" : 8, "n2" : 4 }, { "n1" : 4, "n2" : 6 } ] }
{ "_id" : ObjectId("64b661869be837dc8e997b79"), "name" : "user6", "age" : 55, "letter" : [ { "t" : "T1", "u" : "U1" }, { "t" : "T2", "u" : "U2" }, { "t" : "T3", "u" : "U3" } ], "number" : [ { "n1" : 5, "n2" : 8 }, { "n1" : 8, "n2" : 5 }, { "n1" : 7, "n2" : 6 } ] }

$filter 具有以下語法:

{ $filter: { input: <array>, as: <string>, cond: <expression> } }
  • input: 解析為數(shù)組的表達(dá)式。
  • as: 可選的。代表數(shù)組中每個單獨元素的變量名稱input。如果未指定名稱,則變量名稱默認(rèn)為this。
  • cond: 解析為布爾值的表達(dá)式,用于確定是否應(yīng)將某個元素包含在輸出數(shù)組中。表達(dá)式使用as中指定的變量名分別引用輸入數(shù)組的每個元素。
# 以下示例選擇 number 數(shù)組 n1 字段 僅包含 “大于5” 的文檔:

sit_rs1:PRIMARY> db.user.aggregate([
...    {
...       $project: {
...          number: {
...             $filter: {
...                input: "$number",
...                as: "number",
...                cond: { $gt: [ "$$number.n1", 5 ] }
...             }
...          }
...       }
...    }
... ])
{ "_id" : ObjectId("64b661869be837dc8e997b74"), "number" : [ ] }
{ "_id" : ObjectId("64b661869be837dc8e997b75"), "number" : [ { "n1" : 7, "n2" : 6 } ] }
{ "_id" : ObjectId("64b661869be837dc8e997b76"), "number" : [ ] }
{ "_id" : ObjectId("64b661869be837dc8e997b77"), "number" : [ { "n1" : 9, "n2" : 8 } ] }
{ "_id" : ObjectId("64b661869be837dc8e997b78"), "number" : [ { "n1" : 7, "n2" : 8 }, { "n1" : 8, "n2" : 4 } ] }
{ "_id" : ObjectId("64b661869be837dc8e997b79"), "number" : [ { "n1" : 8, "n2" : 5 }, { "n1" : 7, "n2" : 6 } ] }

as: 是可選的。如果未指定名稱,則變量名稱默認(rèn)為this。下面使用 this 代替。

sit_rs1:PRIMARY> db.user.aggregate([
...    {
...       $project: {
...          number: {
...             $filter: {
...                input: "$number",
...                cond: { $gt: [ "$$this.n1", 5 ] }
...             }
...          }
...       }
...    }
... ])
{ "_id" : ObjectId("64b661869be837dc8e997b74"), "number" : [ ] }
{ "_id" : ObjectId("64b661869be837dc8e997b75"), "number" : [ { "n1" : 7, "n2" : 6 } ] }
{ "_id" : ObjectId("64b661869be837dc8e997b76"), "number" : [ ] }
{ "_id" : ObjectId("64b661869be837dc8e997b77"), "number" : [ { "n1" : 9, "n2" : 8 } ] }
{ "_id" : ObjectId("64b661869be837dc8e997b78"), "number" : [ { "n1" : 7, "n2" : 8 }, { "n1" : 8, "n2" : 4 } ] }
{ "_id" : ObjectId("64b661869be837dc8e997b79"), "number" : [ { "n1" : 8, "n2" : 5 }, { "n1" : 7, "n2" : 6 } ] }

聚合管道更新

從 MongoDB 4.2 開始,您可以使用聚合管道進(jìn)行更新:使用聚合管道可以實現(xiàn)更具表現(xiàn)力的更新語句,例如基于當(dāng)前字段值表達(dá)條件更新或使用另一個字段的值更新一個字段。

以下示例,使用 filter 選擇數(shù)組的子集, 再更新原來的數(shù)組。文章來源地址http://www.zghlxwxcb.cn/news/detail-586140.html

# 以下示例選擇 number 數(shù)組 n1 字段 僅包含 “大于5” 的文檔:并更新替換原來的數(shù)組 
sit_rs1:PRIMARY> db.user.updateMany(
...   { "number": { $exists: true } }, 
...   [{ 
...       $set: { 
...           "number": { 
...               $filter: { 
...   			      input: "$number", 
...   			      as: "number", 
...   			      cond: { $gt: [ "$$number.n1", 5 ] }
...   			  } 
...   		   } 
...    	  } 
...   }] 
... )
{ "acknowledged" : true, "matchedCount" : 6, "modifiedCount" : 6 }

sit_rs1:PRIMARY> db.user.find()
{ "_id" : ObjectId("64b661869be837dc8e997b74"), "name" : "user1", "age" : 10, "letter" : [ { "x" : "X1", "y" : "Y1" }, { "x" : "X2", "y" : "Y2" }, { "x" : "X3", "y" : "Y3" } ], "number" : [ ] }
{ "_id" : ObjectId("64b661869be837dc8e997b75"), "name" : "user2", "age" : 20, "letter" : [ { "V" : "V1", "y" : "Y1" }, { "V" : "V2", "y" : "Y2" }, { "V" : "V3", "y" : "Y3" } ], "number" : [ { "n1" : 7, "n2" : 6 } ] }
{ "_id" : ObjectId("64b661869be837dc8e997b76"), "name" : "user3", "age" : 30, "letter" : [ { "V" : "V1", "w" : "W1" }, { "V" : "V2", "w" : "W2" }, { "V" : "V3", "w" : "W3" } ], "number" : [ ] }
{ "_id" : ObjectId("64b661869be837dc8e997b77"), "name" : "user4", "age" : 45, "letter" : [ { "z" : "Z1", "w" : "W1" }, { "z" : "Z2", "w" : "W2" }, { "z" : "Z3", "w" : "W3" } ], "number" : [ { "n1" : 9, "n2" : 8 } ] }
{ "_id" : ObjectId("64b661869be837dc8e997b78"), "name" : "user5", "age" : 55, "letter" : [ { "z" : "Z1", "u" : "U1" }, { "z" : "Z2", "u" : "U2" }, { "z" : "Z3", "u" : "U3" } ], "number" : [ { "n1" : 7, "n2" : 8 }, { "n1" : 8, "n2" : 4 } ] }
{ "_id" : ObjectId("64b661869be837dc8e997b79"), "name" : "user6", "age" : 55, "letter" : [ { "t" : "T1", "u" : "U1" }, { "t" : "T2", "u" : "U2" }, { "t" : "T3", "u" : "U3" } ], "number" : [ { "n1" : 8, "n2" : 5 }, { "n1" : 7, "n2" : 6 } ] }

到了這里,關(guān)于Mongodb過濾器filter選擇要返回的數(shù)組子集的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • java過濾器(Filter)

    java過濾器(Filter)

    原文鏈接: java過濾器(Filter – 編程屋 目錄 1 過濾器簡介 2 Filter詳細(xì)介紹 3 Filter的用法 3.1 用法1 ?3.2 用法2 filter也稱之為過濾器,它是javaWeb三大組件之一(Servlet程序、Listener監(jiān)聽器、Filter過濾器) 作用: 既可以對請求進(jìn)行攔截,也可以對響應(yīng)進(jìn)行處理。 常見場景: 權(quán)限檢

    2024年02月20日
    瀏覽(30)
  • [Java]過濾器(Filter)

    [Java]過濾器(Filter)

    一、什么是過濾器 過濾器是Servlet的高級特性之一,是實現(xiàn)Filter接口的Java類! 過濾器的執(zhí)行流程: ? 從上面的圖我們可以發(fā)現(xiàn),當(dāng)瀏覽器發(fā)送請求給服務(wù)器的時候, 先執(zhí)行過濾器,然后才訪問Web的資源。服務(wù)器響應(yīng)Response,從Web資源抵達(dá)瀏覽器之前,也會途徑過濾器。 過濾

    2024年02月11日
    瀏覽(20)
  • Fiddler過濾器 Filters 詳解

    Fiddler過濾器 Filters 詳解

    目錄 前言: 一、 Hosts 過濾?(較常用) 二、Client Process 過濾(客戶端進(jìn)程過濾,通過配置只過濾/不過濾哪些進(jìn)程的請求。用的不多) 三、Request Headers?(根據(jù)請求頭信息進(jìn)行過濾。常用) 四、Breakpionts 設(shè)置斷點(很少用,畢竟可以通過 bpu、bpafter以及改寫規(guī)則js設(shè)置斷點)

    2024年02月12日
    瀏覽(28)
  • SpringCloudGateway--過濾器(內(nèi)置filter)

    SpringCloudGateway--過濾器(內(nèi)置filter)

    目錄 一、概覽 二、內(nèi)置過濾器 1、StripPrefix 2、AddRequestHeader 3、AddResponseHeader 4、DedupeResponseHeader 5、AddRequestParameter 6、CircuitBreaker 7、FallbackHeaders 8、RequestRateLimiter 9、RedirectTo 10、RemoveRequestHeader 11、RemoveResponseHeader 12、RemoveRequestParameter 13、RewritePath? 14、RewriteResponseHeader? 15、S

    2024年02月01日
    瀏覽(28)
  • JavaWeb 中 Filter過濾器

    JavaWeb 中 Filter過濾器

    @ 目錄 Filter過濾器 每博一文案 1. Filter 過濾器的概述 2. Filter 過濾器的編寫 3. Filter 過濾器的執(zhí)行過程解析 3.1 Filter 過濾結(jié)合 Servlet 的使用 4. Filter 過濾器的攔截路徑: 4.1 精確匹配路徑 4.2 目錄匹配 4.3 前后綴名路徑匹配 4.4 所有路徑匹配 5. 設(shè)置 Filter 執(zhí)行順序 6. Filter 過濾器中

    2024年02月03日
    瀏覽(23)
  • 布隆過濾器(Bloom Filter)

    布隆過濾器(Bloom Filter)

    通常我們會遇到很多要判斷一個元素是否在某個集合中的業(yè)務(wù)場景,一般想到的是將集合中所有元素保存起來,然后通過比較確定。鏈表、樹、散列表(又叫哈希表,Hash table)等等數(shù)據(jù)結(jié)構(gòu)都是這種思路。但是隨著集合中元素的增加,我們需要的存儲空間也會呈現(xiàn)線性增長,

    2024年02月08日
    瀏覽(35)
  • 登錄校驗-Filter-登錄校驗過濾器

    登錄校驗-Filter-登錄校驗過濾器

    目錄 思路 登錄校驗Filter-流程 步驟 流程圖 登錄校驗Filter-代碼 過濾器類 工具類 測試登錄 登錄接口功能請求 其他接口功能請求 前后端聯(lián)調(diào)? 前端訪問登錄接口,登陸成功后,服務(wù)端會生成一個JWT令牌,并返回給前端,前端會將JWT令牌保存下來,在同一會話中共享JWT令牌信息

    2024年02月11日
    瀏覽(24)
  • SpringCloudGateway--過濾器(自定義filter)

    SpringCloudGateway--過濾器(自定義filter)

    目錄 一、概覽? 二、全局過濾器GlobalFilter 三、通過GatewayFilter實現(xiàn) 四、繼承AbstractGatewayFilterFactory ???????當(dāng)使用Spring Cloud Gateway構(gòu)建API網(wǎng)關(guān)時,可以利用Spring Cloud Gateway提供的內(nèi)置過濾器(filter)來實現(xiàn)對請求的處理和響應(yīng)的處理。過濾器可以在請求被路由之前或之后被執(zhí)

    2024年02月06日
    瀏覽(26)
  • gateway之過濾器(Filter)詳解

    gateway之過濾器(Filter)詳解

    在Spring Cloud中,過濾器(Filter)是一種關(guān)鍵的組件,用于在微服務(wù)架構(gòu)中處理和轉(zhuǎn)換傳入請求以及傳出響應(yīng)。過濾器位于服務(wù)網(wǎng)關(guān)或代理中,并通過攔截請求和響應(yīng)流量來提供各種功能。 過濾器在請求的不同生命周期階段執(zhí)行特定的操作,例如鑒權(quán)、認(rèn)證、請求轉(zhuǎn)發(fā)、限流、

    2024年02月05日
    瀏覽(20)
  • springboot中使用filter過濾器

    springboot中使用filter過濾器

    filter過濾器其實是JavaEE中的規(guī)范,JavaWeb中的三大組件是filter過濾器、listener監(jiān)聽器,servlet服務(wù)。 過濾器的作用就是把請求攔截下來,從而對請求進(jìn)行一些特殊操作,比如檢驗用戶是否登錄,判斷權(quán)限,設(shè)置編碼格式、敏感字符處理等。 filter過濾器中有三個方法: 分別是初始

    2024年02月08日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包