国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

mongodb數組字段prefix匹配返回

魏明 / 956人閱讀

摘要:結構對表的所有數據做過濾,返回中以開頭的元素表原數據返回數據示例數據庫隨機構建表返回只保留了符合過濾規則的第一個元素,順序不能換返回將一個文檔拆分成多個文檔返回數組元素包含字符串返回

DOC: https://docs.mongodb.com/manu...

collection(test)結構
{
    _id: Objectd("123456789"),
    category: [
        "apple_1",
        "apple_2",
        "banana_1",
        "banana_2"
    ]
}
Question:

對test表的所有數據做category過濾,返回category中以apple開頭的元素

表原數據:

[    
    {
        _id: Objectd("id1"),
        category: [
            "apple_1",
            "apple_2",
            "banana_1",
            "banana_2"
        ]
    },
    {
        _id: Objectd("id2"),
        category: [
            "apple_3",
            "apple_4",
            "banana_1",
            "banana_2"
        ]
    }
    ...
]

返回數據示例:

[    
    {
        _id: Objectd("id1"),
        category: [
            "apple_1",
            "apple_2"
        ]
    },
    {
        _id: Objectd("id2"),
        category: [
            "apple_3",
            "apple_4"
        ]
    }
    ...
]



數據庫try:隨機構建test表

function getRandomArrayElements(arr, count) {
    var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;
    while (i-- > min) {
        index = Math.floor((i + 1) * Math.random());
        temp = shuffled[index];
        shuffled[index] = shuffled[i];
        shuffled[i] = temp;
    }
    return shuffled.slice(min);
}
var temp = ["apple_1","apple_2","banana_3","banana_4","pear_5","pear_6","pear_7"];
for(var i =0; i < 10; i ++){
    db.getCollection("test").insert({
            category:getRandomArrayElements(temp, Math.random()*7)
    })
}

Try 1:
db.test.find({},{"category":{
    "$elemMatch":{
        $regex: "apple"
    }
}})

返回:

[    
    {
        _id: Objectd("id1"),
        category: [
            "apple_1",
        ]
    },
    {
        _id: Objectd("id2"),
        category: [
            "apple_3",
        ]
    }
    ...
]
category只保留了符合過濾規則的第一個元素
Try 2:
db.test.aggregate(
    {
        $unwind: "$category"
    },
    {
        $match: {
            category: {
             $regex: "apple_"
            }
        }
    },
    //unwind,match順序不能換
)

返回:

[    
    {
        _id: Objectd("id1"),
        category: "apple_1"
    },
    {
        _id: Objectd("id1"),
        category: "apple_2"
    },
    {
        _id: Objectd("id2"),
        category: "apple_3"
    },
    {
        _id: Objectd("id2"),
        category: "apple_4"
    }
    ...
]
將一個文檔拆分成多個文檔返回
Try 3(Solution):
db.test.aggregate({
    $project: {
        "category":{
            $filter: {
                input: "$category",
                as: "cate",
                cond: {
                    // category數組元素cate包含字符串"apple_"
                    $eq: [ {
                        $indexOfCP: ["$$cate", "apple_"]
                    }, 0] 
                }
            }
        }
    }
})

返回:

[    
    {
        _id: Objectd("id1"),
        category: [
            "apple_1",
            "apple_2"
        ]
    },
    {
        _id: Objectd("id2"),
        category: [
            "apple_3",
            "apple_4"
        ]
    }
    ...
]

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19472.html

相關文章

  • MongoDB指南---11、使用復合索引、$操作符如何使用索引、索引對象和數組、索引基數

    摘要:操作符如何使用索引有一些查詢完全無法使用索引,也有一些查詢能夠比其他查詢更高效地使用索引。有時能夠使用索引,但是通常它并不知道要如何使用索引。索引對象和數組允許深入文檔內部,對嵌套字段和數組建立索引。 上一篇文章:MongoDB指南---10、索引、復合索引 簡介下一篇文章:MongoDB指南---12、使用explain()和hint()、何時不應該使用索引 1、使用復合索引 在多...

    saucxs 評論0 收藏0
  • MongoDB指南---11、使用復合索引、$操作符如何使用索引、索引對象和數組、索引基數

    摘要:操作符如何使用索引有一些查詢完全無法使用索引,也有一些查詢能夠比其他查詢更高效地使用索引。有時能夠使用索引,但是通常它并不知道要如何使用索引。索引對象和數組允許深入文檔內部,對嵌套字段和數組建立索引。 上一篇文章:MongoDB指南---10、索引、復合索引 簡介下一篇文章:MongoDB指南---12、使用explain()和hint()、何時不應該使用索引 1、使用復合索引 在多...

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

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

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

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

    baiy 評論0 收藏0
  • 在node中的mongodb及mongoose常見用法

    摘要:是在環境下對進行便捷操作的對象模型工具安裝一開始需要安裝環境以及數據庫,然后創建數據文件夾并且啟動安裝啟動。出錯返回符合條件的文檔數。修改后的標題同上取反,刪除一個字段執行后字段不存在增減修改器,只對數字有效。 Mongoose是在node.js環境下對mongodb進行便捷操作的對象模型工具 安裝 一開始需要安裝node.js環境以及mongodb數據庫,然后創建mongdb數據文件...

    liuhh 評論0 收藏0

發表評論

0條評論

魏明

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<